服务器 用户模式 实现信息传输(实现QQ功能)

import java.io.*;
import java.net.*;


public class MultiClientServer implements Runnable{

static int SerialNum = 0; //每个Client的序列号。
Socket socket;

public MultiClientServer(Socket ss){
socket = ss;
}

public static void main (String args[]){

int MaxClientNum = 5;  
try{
//建立Server Socket。
ServerSocket server = new ServerSocket(1680);

for( int i = 0; i<MaxClientNum;i++){
Socket socket=server.accept();//监听为作出此套接字连接到并接受它。


//连接建立,创建一个Server端线程与Client端通信。
Thread t = new Thread(new MultiClientServer(socket));
t.start();
}
server.close();  //关闭Server Socket。

}catch(Exception e){
System.out.println("Error:"+e);
}
       
}

  //Server端通信线程的线程体。
  public void run(){
     int myNum = ++SerialNum;


  try{
  //通过Socket获取连接上的输入/输出流。
  BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());

//创建标准输入流,从键盘接收数据。
BufferedReader sin=new BufferedReader(
new  InputStreamReader(System.in));//替换音乐路径


/* 先读取Client发送的数据,然后从标准输入读取数据发送给Client。
当接收到bye时关闭连接。*/
String s;
while(!(s=in.readLine()).equals("bye")){
System.out.println("# Received from Client No."+myNum+": "+s);
out.println(sin.readLine());
out.flush();
}
   System.out.println("The connection to Client No."+
    myNum+" is closing... ... ");
   
   //关闭连接。
in.close();
out.close();
socket.close();

}catch(Exception e){
System.out.println("Error:"+e);
}

}

}

服务器端

import java.io.*;
import java.net.*;


public class MyClient{
public static void main (String args[]){
try{
Socket socket = new Socket("127.0.0.1",1680);  //发出连接请求。
                                          //本地计算机模拟 使用1680端口

//连接建立,通过Socket获取连接上的输入/输出流。
PrintWriter out = new PrintWriter(socket.getOutputStream());
//发送输出流                                   //OutputStream类型的

BufferedReader in = new BufferedReader(
new InputStreamReader (socket.getInputStream()));
                                                           //得到服务器输入流

//创建标准输入流,从键盘接收数据。
BufferedReader sin = new BufferedReader(
new InputStreamReader (System.in));

//从标准输入中读取一行,发送Server端,当用户输入bye时结束连接。
String s;
do{
s=sin.readLine();
out.println(s);
out.flush();
if (!s.equals("bye")){
System.out.println("@ Server response:  "+in.readLine());
}
else{
System.out.println("The connection is closing... ... "); 
}

}while(!s.equals("bye"));


//关闭连接。
out.close();
in.close();
socket.close();


}catch (Exception e) {
System.out.println("Error"+e);
}
}
}

用户端

发布了24 篇原创文章 · 获赞 7 · 访问量 2万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览