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

熱點內容
單片機開發用的軟體 瀏覽:148
程序員8個演算法題 瀏覽:400
php題庫系統 瀏覽:217
王牌戰爭文明重啟選什麼伺服器 瀏覽:650
簡述對稱加密法 瀏覽:653
c語言數學編程 瀏覽:985
F1B命令 瀏覽:629
cs命令快捷鍵 瀏覽:851
阿里雲購買伺服器如何用現金支付 瀏覽:686
pythontime等待 瀏覽:985
單片機串列通信方式 瀏覽:495
android表格demo 瀏覽:275
安卓怎麼讓相冊不顯示網頁 瀏覽:311
php文件系統源碼 瀏覽:723
易信java 瀏覽:497
北侖二級壓縮螺桿機 瀏覽:60
加密路線免費入口 瀏覽:756
計算器程序員是幹嘛的 瀏覽:364
數控編程里fo是啥鍵 瀏覽:672
javacdataxml 瀏覽:960