基于Socket的通信机制-有连接通信方式:多线程通信

来源:互联网 发布:stm32f103 flash编程 编辑:程序博客网 时间:2024/05/01 11:14


客户端程序

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);//发出连接请求//连接建立,通过Socket获取连接上的输入/输出流PrintWriter out = new PrintWriter(socket.getOutputStream());BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));//创建标准输入流,从键盘接受数据BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));//从标准输入中读取一行,发送Server端,当用户输入bye是结束连接String s;do{System.out.print("YOU: ");s=sin.readLine();out.println(s);out.flush();if(!s.equals("bye")){System.out.println("server: "+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);}}}



服务器端程序
public class MultiClientServer implements Runnable{static int SerialNum=0;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();//连接建立,创建一个Sever端线程与Client端通信Thread t=new Thread(new MultiClientServer(socket));t.start();}server.close();}catch(Exception e){System.out.println("Error:"+e);}}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("Client No."+myNum+":"+s);out.println(sin.readLine());out.flush();}System.out.println("Client No."+myNum+"closed.");//关闭连接in.close();out.close();socket.close();}catch(Exception e){System.out.println("Error:"+e);}}}


原创粉丝点击