(六)Socket多客户端通信实现

  • 多客户端通信实现

客户端程序:

public class MultiTalkClient{
  int num;
public static void main(String args[]){
 try{
Socket socket=new Socket("127.0.0.1",4700);
//键盘输入流
BufferedReader sin=new BufferedReader(new 
  InputStreamReader(System..in));
//socket输出流
PrintWriter os=new PrintWriter(socket.getOutputStream());
//socket输入流
BufferedReader is=new BufferedReader(new 
  InputStreamReader(socket.getInputStream()));
String readline;
while(!readline.equals("bye"))
  {os.println(readline);
   os.flush();
System.out.println("Client:"+readline);
System.out.println("Server:"+is.readLine());
readline=sin.readLine();
    }
os.close();
is.close();
socket.close();
}catch(Exception e){
System.out.println("Error"+e);
  }
 }
}

服务端程序:

public class MultiTalkServer{
static int clientnum=0;
public static void main(String args[])throws IOException{
     ServerSocket serverSocket=null;
     boolean listening=true;
  try{serverSocket=new ServerSocket(4700);
}catch(IOException e){
System.out.println("Could not listen on port:4700.");
System.exit(-1);
}
while(listening)
{
new ServerThread(serverSocket.accept(),clientnum).start();
clientnum++;
}
serverSocket.close();
   }
}

程序ServerThread

public class ServerThread extends Thread{
  Socket socket=null;
int clientnum;
public ServerThread(Socket socket,int num){
 this.socket=socket;
 clientnum=num+1;
}
public void run(){
   try{
String line;
BufferedReader is=new BufferedReader(new 
    InputStreamReader(socket.getInputStream()));
PrintWriter os=new 
  PrintWriter sin=new BufferedReader(new
    InputStreamReader(System.in));
System.out.println("Client"+clientnum+":"+
     is.readLine());
line=sin.readLine();
while(!line.equals("bye"))
{
  os.println(line);
  os.flush();
System.out.println("Server:"+line);
System.out.println("Client:"+clientnum+":"+is.readLine());
line=sin.readLine();
}
os.close();
is.close();
socket.close();
}catch(Exception e){
System.out.println("Error:"+e);
   }
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值