其实,简单的分析一下,就可以看出客户和服务通讯的主要通道就是socket本身,而服务器通过accept方法就是同意和客户建立通讯.这样当客户建立socket的同时。服务器也会使用这一根连线来先后通讯,那么既然如此只要我们存在多条连线就可以了。那么我们的程序可以变为如下:
那么下面的问题是如何使用线程.首先要做的事情是创建线程并使得其可以和网络连线取得联系。然后由线程来执行刚才的操作,要创建线程要么直接继承thread要么实现runnable接口,要建立和socket的联系只要传递引用就可以了.而要执行线程就必须重写run方法,而run方法所做的事情就是刚才单线程版本main所做的事情,因此我们的程序变成了这样:
import java.net.*;
import java.io.*;
public class multiuser extends thread{
private socket client;
public multiuser(socket c){
this.client=c;
}
public void run(){
try{
bufferedreader in=new bufferedreader(new inputstreamreader(client.getinputstream()));
printwriter out=new printwriter(client.getoutputstream());
//mutil user but can parallel
while(true){
string str=in.readline();
system.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("end"))
break;
}
client.close();
}catch(ioexception ex){
}finally{
}
}
public static void main(string[] args)throws ioexception{
serversocket server=new serversocke
闽公网安备 35060202000074号