服务器端与客户端TCP连接入门(三:多线程)
生活随笔
收集整理的這篇文章主要介紹了
服务器端与客户端TCP连接入门(三:多线程)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? 對于服務(wù)器端來說,如果要加入多線程機制,則應(yīng)該在每個用戶連接之后啟動一個新的線程
建立一個EchoThread類,此類專門用于處理多線程操作,此時的多線程使用Runnable接口實現(xiàn)
package Socket;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.Socket; /*** 接收每一個客戶端的Socket,并通過循環(huán)的方式接收客戶端的輸入信息及向客戶端輸出信息*/ public class EchoThread implements Runnable {private Socket client=null; //接收客戶端public EchoThread(Socket client){ //通過構(gòu)造方法設(shè)置Socketthis.client=client;}public void run() {PrintStream out=null;BufferedReader buf=null;try {buf=new BufferedReader(new InputStreamReader(client.getInputStream()));//得到客戶端輸入信息out=new PrintStream(client.getOutputStream());//實例化客戶端的輸出流boolean flag=true;while(flag){ //客戶端循環(huán)操作String str=buf.readLine();//不斷接收信息if(str==null||"".equals(str)){flag=false;}else{if("bye".equals(str)){ //如果輸入bye,結(jié)束操作flag=false;}else{out.println("ECHO:"+str);//向客戶端回顯信息 }}}out.close();client.close();} catch (IOException e) {e.printStackTrace();}} }?
?
是是
package Socket;import java.io.BufferedReader; import java.io.IOException; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; /** 在服務(wù)器端,每一個連接到服務(wù)器的客戶端Socket都會以一個線程的方式運行,* 這樣,無論有多少個客戶端連接都可以同時完成操作*/ public class EchoThreadServer {public static void main(String[] args) throws Exception {ServerSocket server =null;//定義ServerSocket對象Socket client=null;//定義socket對象,表示客戶端 server = new ServerSocket(8888);//此服務(wù)器在8888端口進行監(jiān)聽boolean f=true;while(f){System.out.println("服務(wù)器運行,等待客戶端連接。");client=server.accept();new Thread(new EchoThread(client)).start();//實例化并啟動一個線程對象 }server.close();}}?
轉(zhuǎn)載于:https://www.cnblogs.com/Donnnnnn/p/6197494.html
總結(jié)
以上是生活随笔為你收集整理的服务器端与客户端TCP连接入门(三:多线程)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hive删除数据
- 下一篇: 通过FFMPEG代码学习函数指针和指针函