導航:首頁 > 配伺服器 > 一個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埠怎麼連接多個伺服器相關的資料

熱點內容
u盤加密後如何取消密鑰 瀏覽:335
進mysql命令 瀏覽:105
在電腦上打出來的文件怎麼解壓 瀏覽:26
程序員去銀行工資高嗎 瀏覽:65
文件夾怎麼豎著排列順序 瀏覽:172
ifcfgens3什麼命令 瀏覽:579
戴爾伺服器如何用u盤做系統教程 瀏覽:404
php重定向過多 瀏覽:127
我的世界安卓版怎麼弄海賊生存 瀏覽:769
phpui框架 瀏覽:686
phppdomysql安裝 瀏覽:301
php設計模式好處 瀏覽:23
一個叫什麼tv的手機app 瀏覽:591
英語文件夾製作過程 瀏覽:630
java文件hash 瀏覽:41
可編程電源品牌 瀏覽:323
8位16位單片機 瀏覽:974
如何快速在app游戲退款 瀏覽:100
申論pdf下載 瀏覽:966
linuxstorage 瀏覽:366