java socket 一对多_java socket 实现多个一对一聊天

packagecn.com.test09;importjava.io.BufferedReader;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;importjava.io.InputStreamReader;importjava.net.Socket;importjava.net.UnknownHostException;public classt13 {public static voidmain(String[] args) {new ClientOO("192.168.0.105",8080,"1");//服务器ip 服务器端口 自身编号

}

}classClientOO{privateString path;private intport;privateString name;privateDataInputStream in;privateDataOutputStream out;public ClientOO(String path,intport,String name){this.path=path;this.port=port;this.name=name;try{

Socket s=newSocket(path,port);this.in=newDataInputStream(s.getInputStream());this.out=newDataOutputStream(s.getOutputStream());

}catch(UnknownHostException e) {//TODO Auto-generated catch block

e.printStackTrace();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

send();

hhhhh();

}public voidsend(){

String s= null;try{

out.writeUTF(name);

out.flush();

s=in.readUTF();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println("在线列表:"+s);

}public voidhhhhh(){newMyServerReader1(in).start();newMyServerWriter1(out).start();

}

}class MyServerReader1 extendsThread {privateDataInputStream dis;publicMyServerReader1(DataInputStream dis) {this.dis =dis;

}public voidrun() {

String info;try{while (true) {//如果对方,即客户端没有说话,那么就会阻塞到这里,//这里的阻塞并不会影响到其他线程

info =dis.readUTF();//如果状态有阻塞变为非阻塞,那么就打印接受到的信息

System.out.println("对方说: " +info);if (info.equals("bye")) {

System.out.println("对方下线,程序退出!");

System.exit(0);

}

}

}catch(IOException e) {

e.printStackTrace();

}

}

}//从键盘获得输入流并写入信息到客户端

class MyServerWriter1 extendsThread {privateDataOutputStream dos;publicMyServerWriter1(DataOutputStream dos) {this.dos =dos;

}public voidrun() {//读取键盘输入流

InputStreamReader isr = newInputStreamReader(System.in);//封装键盘输入流

BufferedReader br = newBufferedReader(isr);

String info;try{while (true) {

info=br.readLine();

dos.writeUTF(info);

dos.flush();if (info.equals("bye")) {

System.out.println("自己下线,程序退出!");

System.exit(0);

}

}

}catch(IOException e) {

e.printStackTrace();

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值