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

熱點內容
伺服器藍色什麼意思 瀏覽:226
vb組態軟體源碼 瀏覽:698
加密蚊帳防蚊門簾 瀏覽:828
vs2010多線程編程 瀏覽:214
新股上市指標源碼 瀏覽:698
c語言51單片機教程 瀏覽:554
app中的hd是什麼意思 瀏覽:279
手機什麼解壓器最好 瀏覽:49
什麼是適合自己的app 瀏覽:451
雲伺服器怎麼補漏洞 瀏覽:176
如何看自己的安卓是什麼等級 瀏覽:633
被丁磊挖走的程序員 瀏覽:19
gsk980ta編程 瀏覽:507
單片機離線 瀏覽:84
解壓助眠敲擊外國長指甲 瀏覽:421
3次元編程 瀏覽:803
夫妻傳送英文命令 瀏覽:316
程序員題代做 瀏覽:950
戴爾伺服器怎麼擴大內存 瀏覽:641
解壓包密碼消失 瀏覽:135