java socket和多线程(Thread)实例
1. socket通信:有客户端和服务端的socket代码。
2.
多线程:客户端和服务端各用一线程发送信息;服务端另有一监听线程,用于把超时的信息删除。
这里应用到了同步,使两个线程可以操作同一个map。
代码:(类全在同一个包内)
server端:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Collections;
import java.util.concurrent.TimeUnit;
import java.util.HashMap;
import java.util.Map;
public class ServerNet {
// 以毫秒为单位
private final static long timeLimit = 10000 ;
private Map<String,String> map = Collections.synchronizedMap(new HashMap<String,String>());
public void ServerSocketNet(){
try{
ServerSocket ss = new ServerSocket(6060);
Socket s = ss.accept();
// 用于获取客户端传输来的信息
BufferedReader buff = new BufferedReader(new InputStreamReader(s.getInputStream()));
// 用于获取服务端准备响应的信息
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// 发送服务端准备响应的信息
PrintWriter pw = new PrintWriter(s.getOutputStream(),true);
pw.println("您已经成功建立连接!");
new ServerOutNet(pw, in);
new ServerTimeListener(map, timeLimit);
// 显示客户端的传输来的信息
while(true){
String str = buff.readLine();
if(str.equals("exit")){
break;
}else{
map.put(ServerHelper.getInstance().getMapKey(), str);
System.out.println(str + " map.size: " + map.size());
}
System.out.println("To Client:");
Thread.sleep(100);
}
s.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args){
new ServerNet().ServerSocketNet();
}
}
/**
* server发送线程 向客户端发送响应信息
* @author ids-user
*
*/
class ServerOutNet extends Thread{
pri
相关文档:
java 集合框架(Collection)和数组的排序
根据约定,在使用java编程的时候应尽可能的使用现有的类库,当然你也可以自己编写一个排序的方法,或者框架,但是有几个人能写得比JDK里的还要好呢?使用现有的类的另一个好处是代码易于阅读和维护,这篇文章主要讲的是如何使用现有的类库对数组和各种Collection容器进 ......
反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其中LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近 ......
1.修改项目的.project文件,保存,刷新工程。
在<natures>
…
</natures>
之间添加下列三行配置
<nature>org.eclipse.wst.common.project.facet.core.nature</n ......
很简单的小例子,适合初学者理解
1,JavaFlex.java
package flex;
public class JavaFlex {
public String helloJavaFlex(String name) {
return name;
}
}
2,remoting-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service" class="flex.messaging.services.Remo ......