導航:首頁 > 配伺服器 > 一個tcp埠怎麼連接多個伺服器

一個tcp埠怎麼連接多個伺服器

發布時間:2022-06-04 03:39:44

① 一個TCP埠可被多個連接共享,為什麼

咨詢記錄 · 回答於2021-11-01

② TCP埠的問題

不是一對一關系.伺服器上某個軟體的埠是固定的.客戶機的上連接該軟體的埠是不一定

③ 怎麼用多線程實現TCP並行伺服器,服務

伺服器監聽埠 做個無限循環 接到一個連接就創建一個通道線程,並將通道線程存儲到一個list集合中

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List; /* * 4.用socket通訊寫出多個客戶端和一個伺服器端的通訊, * 要求客戶發送數據後能夠回顯相同的數據(回顯功能)(實用TCP方式)。 */public class Test4Server { // 主入口 public static void main(String[] args) throws IOException { scoketServer(); } // 開啟的tcp8888監聽埠 public static void scoketServer() throws IOException { ServerSocket server = new ServerSocket(8888); while (true) { // 未連通前線程阻塞,連通後開啟一個socket通道線程後繼續監聽8888埠 Socket socket = server.accept(); System.out.println(socket.getInetAddress().getHostAddress() + "連接進入"); new SocketThread(socket).start(); } } } // 一個伺服器埠中監聽多個客服端通道線程class SocketThread extends Thread {// 所有通道寫入流的集合 private static List<PrintWriter> list =new ArrayList<PrintWriter>(); private BufferedReader bufferedReader; private PrintWriter printWriter; public SocketThread(Socket socket) throws IOException { this.bufferedReader = new BufferedReader(new InputStreamReader(socket .getInputStream())); this.printWriter = new PrintWriter(socket.getOutputStream()); list.add(printWriter); } @Override public void run() { String string = null; while (true) { try { // 伺服器在通道中讀到的信息回顯給客服端 string = bufferedReader.readLine(); System.out.println("客服端信息:" + string); for(PrintWriter printWriter:list ){ printWriter.write("伺服器回顯:" + string + "\r\n"); printWriter.flush(); } } catch (IOException e) { } } }}

④ 如何實現tcp/ip單個用戶與單個伺服器通信以及多個用戶與單個伺服器的通信連接

同學您好,這個問題我分開解答哈!①單個用戶與單個伺服器通信採用Socket進行連接,用戶方面的流程是:1.新建套接字Socket s;2.確定伺服器IP地址和埠號 addr = 192.168.1.12 port = 8080;3.對本機地址進行顯式或隱式綁定(一般採用隱式綁定故這步可以忽略)4.開啟與伺服器的連接connect(s,addr);5.進行數據交互傳輸 send recv;6.通信結束 關閉套接字closesocket(s);

伺服器方面的流程是:1.新建套接字Socket s;2.確定本地IP和埠號(不能隱式綁定)addr = 192.168.1.12 port = 8080;3.對本地IP和埠進行綁定bind(s,addr);4.對埠進行監聽listen(s);5.接收一個連接 newsock = accept(s);6.進行數據交互傳輸 send recv;7.通信結束 關閉套接字closesocket(s)。

②單個伺服器與多個用戶的通信連接,用戶端與①中流程相同,伺服器端第5步接收了一個連接之後開始不同。伺服器在接收了一個連接之後,便新建一個套接字newsock,此時要開啟一個子線程來負責處理與該用戶機的數據傳輸,而主線程繼續監聽埠創建新的子線程來與多個用戶進行連接。C下可以採用createThread函數,

CreateThread(NULL,0,
chat,//子線程函數入口
&newsock,//傳給子線程的參數
0,&Tid);
然後在chat函數中進行recv和send即可

⑤ tcp協議中一個埠可以接受多個數據嗎

不行的!一個程序佔用一個埠號後!另外一個程序就不能佔用相同的埠號了!

閱讀全文

與一個tcp埠怎麼連接多個伺服器相關的資料

熱點內容
程序員進公司有什麼優勢 瀏覽:642
迅雷文件夾縮寫是什麼 瀏覽:279
魔獸宏命令不能最高等級 瀏覽:159
程序員入職拼多多 瀏覽:119
pc如何訪問伺服器配置 瀏覽:76
pdfpower 瀏覽:42
linux系統運行級別 瀏覽:229
android下載文件demo 瀏覽:949
人體解剖圖pdf 瀏覽:823
php拋出異常處理 瀏覽:502
java字元串轉為對象 瀏覽:617
西貝爾壓縮機怎樣 瀏覽:616
phpzookeeper擴展 瀏覽:587
vue壓縮後的js可以反編嗎 瀏覽:854
javachar數組賦值 瀏覽:103
自動畫頸線指標源碼 瀏覽:72
訪問共享文件夾錯誤代碼 瀏覽:504
代號pdf 瀏覽:20
java編碼規范pdf 瀏覽:146
linuxshellread 瀏覽:226