java applet socket_Java swing applet中使用的套接字

小编典典

基于此示例,这是一个使用Swing的简单网络客户端/服务器对。请注意与正确同步有关的一些问题:GUI本身是使用事件分配线程构建的invokeLater()。此外,代码还依赖的线程安全性append()。最后,它结合了文章Text Area Scrolling中的一个方便提示。

更新:在Java 7中,append()不再标记为线程安全;invokeLater()用于display()序列更新。

package net;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

import java.util.Scanner;

import javax.swing.*;

import javax.swing.text.DefaultCaret;

/**

* A simple network client-server pair

* @http://stackoverflow.com/questions/3245805

*/

public class Echo implements ActionListener, Runnable {

private static final String HOST = "127.0.0.1";

private static final int PORT = 12345;

private final JFrame f = new JFrame();

private final JTextField tf = new JTextField(25);

private final JTextArea ta = new JTextArea(15, 25);

private final JButton send = new JButton("Send");

private volatile PrintWriter out;

private Scanner in;

private Thread thread;

private Kind kind;

public static enum Kind {

Client(100, "Trying"), Server(500, "Awaiting");

private int offset;

private String activity;

private Kind(int offset, String activity) {

this.offset = offset;

this.activity = activity;

}

}

public Echo(Kind kind) {

this.kind = kind;

f.setTitle("Echo " + kind);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.getRootPane().setDefaultButton(send);

f.add(tf, BorderLayout.NORTH);

f.add(new JScrollPane(ta), BorderLayout.CENTER);

f.add(send, BorderLayout.SOUTH);

f.setLocation(kind.offset, 300);

f.pack();

send.addActionListener(this);

ta.setLineWrap(true);

ta.setWrapStyleWord(true);

DefaultCaret caret = (DefaultCaret) ta.getCaret();

caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

display(kind.activity + HOST + " on port " + PORT);

thread = new Thread(this, kind.toString());

}

public void start() {

f.setVisible(true);

thread.start();

}

//@Override

public void actionPerformed(ActionEvent ae) {

String s = tf.getText();

if (out != null) {

out.println(s);

}

display(s);

tf.setText("");

}

//@Override

public void run() {

try {

Socket socket;

if (kind == Kind.Client) {

socket = new Socket(HOST, PORT);

} else {

ServerSocket ss = new ServerSocket(PORT);

socket = ss.accept();

}

in = new Scanner(socket.getInputStream());

out = new PrintWriter(socket.getOutputStream(), true);

display("Connected");

while (true) {

display(in.nextLine());

}

} catch (Exception e) {

display(e.getMessage());

e.printStackTrace(System.err);

}

}

private void display(final String s) {

EventQueue.invokeLater(new Runnable() {

//@Override

public void run() {

ta.append(s + "\u23CE\n");

}

});

}

public static void main(String[] args) {

EventQueue.invokeLater(new Runnable() {

//@Override

public void run() {

new Echo(Kind.Server).start();

new Echo(Kind.Client).start();

}

});

}

}

2020-02-26

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【牛客 - 370A】签到题(线段树扫描线 或 STLset)(求线段并)

题干: 链接:https://ac.nowcoder.com/acm/contest/370/A 来源:牛客网 恭喜你找到了本场比赛的签到题! 为了让大家都有抽奖的机会,只需要复制粘贴以下代码(并且稍微填下空)即可 AC&#xff1…

java sqlserver分页查询_SQLServer之常用的分页查询语句介绍

在SqlServer中,分页查询是经常用到的查询语句,一个好的分页查询语句,不能能将代码省略,还能提高运行效率,下面我们来探讨一下SQLServer中的分页查询语句。具体的业务逻辑是这样的,我数据库中有100条数据&am…

【牛客 - 370H】Rinne Loves Dynamic Graph(分层图最短路)

题干: 链接:https://ac.nowcoder.com/acm/contest/370/H 来源:牛客网 Rinne 学到了一个新的奇妙的东西叫做动态图,这里的动态图的定义是边权可以随着操作而变动的图。 当我们在这个图上经过一条边的时候,这个图上所…

中位数及带权中位数问题(转)

先从一到简单的题看起: 士兵站队问题 在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点由整数坐标(x,y)表示。士兵们可以沿网格边上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵。按照军官的命令,…

java编写学籍管理系统_java学籍管理系统源代码.doc

java学籍管理系统源代码package zuoye;//主类import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.io.*;import java.util.Hashtable;public class ManagerWindow extends JFrame implements ActionListener{InputStudent 基本信息录入null;ModifySit…

*【SGU - 114】Telecasting station (带权中位数 或 三分)

题干: Every city in Berland is situated on Ox axis. The government of the country decided to build new telecasting station. After many experiments Berland scientists came to a conclusion that in any city citizens displeasure is equal to product…

java的et5_Javascript与java相同的3des加密(使用etdesede/CBC/PKCS5Padding )

在某个项目中,需要开发一个与native相对应的web前端app,后台用的是java restful接口,请求数据时需要用的3des加密。如果想要请求接口,则需要javascript的加密与java相同,于是在baidu与google进行了大量搜索&#xff0c…

*【HDU - 4272 】LianLianKan (dfs 或 状压dp,贪心不行)

题干: I like playing game with my friend, although sometimes looks pretty naive. Today I invent a new game called LianLianKan. The game is about playing on a number stack. Now we have a number stack, and we should link and pop the same element…

java中的values函数_巧用valueat函数(快逸免费版)

在制作报表时,经常会遇到将数据库里一列数据按照条件取值后,分为多列显示的需求,例如:数据库中有一列名为type的数据,在报表中,第一列选择type为1的数据,第二列选择type为2的数据。由于受到扩展…

Java设计流程执行器_Java进阶面试精选系列:SpringMVC+SpringBoot+Hibernate+Mybatis+设计模式...

小编精心收集:为金三银四准备,以下面试题先过一遍,为即将到了的面试做好准备,也过一遍基础知识点。一、Spring/Spring MVC1.为什么要使用 spring?2.解释一下什么是 aop?3.解释一下什么是 ioc?3.…

【CCFCSP - 201403-4】无线网络(分层图最短路)

题干: 试题编号:201403-4试题名称:无线网络时间限制:1.0s内存限制:256.0MB问题描述: 问题描述   目前在一个很大的平面房间里有 n 个无线路由器,每个无线路由器都固定在某个点上。任何两个无线路由器只要…

【牛客 - 370E】Rinne Loves Gift(Bellman_Ford判负环,二分,分数规划)

题干: 链接:https://ac.nowcoder.com/acm/contest/370/E 来源:牛客网 Rinne 喜欢礼物,也喜欢送礼物 圣诞节快到了,Rinne 要去给给住在城市里的人送礼物 城市的交通可以抽象成一个 n 个点 m 条边的有向图 每条边上有…

【POJ - 2976】【ZOJ - 3068】【SCU - 2992】Dropping tests (01分数规划)

题干: In a certain course, you take n tests. If you get ai out of bi questions correct on test i, your cumulative average is defined to be . Given your test scores and a positive integer k, determine how high you can make your cumulative aver…

重写过的url 怎么获取当前页面url java_网站URL重写(Java UrlRewrite 的使用)

现在大部分的网站和商城都会使用到URL重写,接触到这个,也是因为正在做的电子商务商城。URL重写,是将原有的URL采用另一种规则来显示,使得用户方便访问同时也屏蔽一些信息。在此说下它的好处,在开发过程中,经…

【51nod - 1050】循环数组最大子段和(dp)

题干: N个整数组成的循环序列a[1],a[2],a[3],…,a[n],求该序列如a[i]a[i1]…a[j]的连续的子段和的最大值(循环序列是指n个数围成一个圈,因此需要考虑a[n-1],a[n],a[1],a[2]这样的序列)。当所给的整数均为负数时和为0。…

Java行业情景分析_Java 设计模式情景分析——单例模式

单例模式可以说是应用最广的模式之一,在应用单例模式时,单例对象的类必须保证只有一个实例存在,而且可以自行实例化并向整个系统提供这个实例。一般在不能自由构造对象的情况下,就会使用单例设计模式,例如创建一个对象…

笔试题 - 汽车加油问题

题干: 第一行输入n,k,代表共有k个加油站,加满油后可以跑n公里。 第二行k1个数,其中前k个数代表加油站的位置,第k1个数代表终点的位置。 一辆车从坐标零点加满油后出发,问最少加几次油&#xff0…

php实现播放直播_PHP直播技术分享(一:实现直播)

推流服务器采用的是自搭的推流服务器 , 自己玩玩 做外包项目还是去搞七牛云/阿里这样的服务器吧,开始bb-----1:技术栈image.jpeg2:开发中业务(1)主播申请时创建个秘钥 , 这个秘钥随时字符串即可到时候根据字符串找到拉流的直播位置存数据库包括推流地址image.png3:配置nginx-rt…

笔试题 - 阶乘问题

题干&#xff1a; 【题意】 给你一个数组n&#xff08;1<n<1e5&#xff09; 让你输出有多少数的阶乘后恰好有n个0&#xff0c;并依次输出。 【类型】 二分or暴力 【分析】 肯定满足&#xff0c;数字越大&#xff0c;其后的0的个数也就越多。 于是我们可以二分出最小的l&…

php获取location,php获取header[‘location’]信息常见问题

15/01/31本文关键字: 302, header, location//初始化url信息$host “#8221;;$url$host.”l/rzTf7ap2viw/&iid222004556&resourceId0_04_05_99/v.swf”;//按照字段获取header响应信息$headers get_headers($url, TRUE);//获取这个土豆的302跳转地址$u302 $headers[“Lo…