Socket通信和多線程的總結


1.ServerSocket進行多線程接收

package com.yh.chat;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ChatServerSocket {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ServerSocket serversocket = null;
        Socket socket = null;
        try {
            serversocket = new ServerSocket(5005);
            while (true) {
                socket = serversocket.accept();
                ChatAcceptSocket accept = new ChatAcceptSocket(socket);
                accept.start();
            }
            // 發送信息
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

package com.yh.chat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;

public class ChatAcceptSocket extends Thread {
    private Socket socket;
    
    public ChatAcceptSocket(){}
    public ChatAcceptSocket(Socket socket){
        this.socket=socket;
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        InputStream is = null;
        BufferedReader br = null;
        // 接收信息
        try {
            is = socket.getInputStream();
            br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
            String info = "";
            while ((info = br.readLine()) != null) {
                OutputStream os = socket.getOutputStream();
                byte[] replys = info.getBytes();
                System.out.println("廣播:"+info);
                os.write(replys);
                os.close();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

 

2.客戶端進行連接(代碼省略,參考:流式套接字:基於TCP協議的Socket網絡編程(案例1)

這里ServerSocket進行的廣播僅限當前線程的中的socket,不會給其他線程的socket發送數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM