導航:首頁 > IDC知識 > socket伺服器發消息

socket伺服器發消息

發布時間:2021-01-19 03:45:13

1、linux下,socket伺服器和客戶端TCP方式建立了連接,如何使它們之間相互發送消息?

1.可能是在獲取復客戶端的ip和埠時,處制理出現問題,導致無法正確發送到客戶端。
2.客戶端是否使用固定的埠來接收伺服器信息,或伺服器是否正確發送到客戶端的相應的埠。
3.通過上面分析,最大可能是在處理埠出現問題,請重新檢查。
4.實在不行,最好使用拋出異常方法來捕獲錯誤消息,或是通過一步一步調試分析數據發送過程。

2、C語言Socket伺服器怎麼給客戶端發消息

你的文件中的問題
// 會阻塞進程,直到有客戶端連接上來為止
// 既然是直到有客戶端連接上,那麼就要弄明白哪個是與客戶端連接的套接字
// sockClient就是與客戶端連接的套接字
sockClient = accept(sockServer, (SOCKADDR*)&addrClient, &len);
//接收並列印客戶端數據
recv(sockClient, recvBuf, 100, 0);
printf("%s\n", recvBuf);
// 所以此處,應該把sockServer改為sockClient
send(/*sockServer*/sockClient, sendBuf, 100, 0);

PS:伺服器客戶端通信,是要保持伺服器與客戶端的連接。
而不能這樣立即關閉,如果設置不對,立即關閉,緩沖區的數據是會丟失的。那客戶端也就不會再收到數據了。
你可以加Sleep(10000);來測是通信過程
//關閉socket
closesocket(sockClient);

3、用Socket怎麼從伺服器向客戶端發送消息

首先建議使用一個線程向所有客戶端發送消息; 在寫一個方法發送消息內, 方法裡面需要 消息和容socket 參數; Thread tSend= new Thread(SendAll); private void SendAll() { //遍歷所有的Socket,調用Send(string msg,Socket socket)方法 //不知道你的Socket放到哪裡,如果放到集合就遍歷集合挨個調用 } private void Send(string msg,Socket socket) { byte[] buffer = Encoding.Default.GetBytes(msg); socket.Send(buffer); }

4、C語言socket編程要怎麼實現伺服器可以發消息給客戶端?

先要理解socket是什麼?
簡單的說socket是一個全雙工的通信通道,
即使用TCP或者UDP通信時均可以在發送消息的同時接受消息,
它不區分是否是伺服器。
根據這個概念你的問題就很好回答。
》當客戶端與伺服器連接後。有什麼方法使伺服器可以隨時隨地發消息給客戶端?
》我現在只能。客戶端發個消息給伺服器。伺服器才能發個消息給客戶端。也就是說客戶端不發消息。伺服器就沒法發消息給客戶端。
》求大牛給個思路。當連接後。客戶端與伺服器雙方可以隨時隨地通信!
使用多線程,一個維持接受邏輯,一個維持送信邏輯,即可完成同時接受及發送。
客戶端及伺服器端均做上述設置。
而你的做法是在一個線程中執行接受與送信,因此只能按照順序邏輯完成接收與送信。
關鍵點是多線程。

5、java socket伺服器發送信息給指定的客戶端,在線等

是tcp還是udp啊?socket連接可以指定ip和埠啊,所以服務端即使有N個socket連接都不怕,知道埠就行了

6、socket 伺服器給指定的客戶端發消息該怎麼處理

socket
伺服器給抄指定的客戶端發消息該怎麼處理(tcp)(c語言)
多個客戶端之間進行通訊,通過伺服器轉發的形式,現在客戶端1請求向客戶端2發送消息,先把消息發送到伺服器,伺服器怎麼才能把消息轉發到客戶端2而不是轉發給客戶端3或者他自己。

7、java socket伺服器怎麼給所有客戶端發系統消息

將鏈接過來的socket保存,需要廣播時遍歷發送:
在server主類中版定義private static List<Socket> sos=new ArrayList<Socket>();並添加getset方法,在server線程類的構權造方法中:
public ServerThread(Socket s,List<ShipMes> ships){
this.s=s;
this.ships=ships;
ss.setSos(s);
}
需要廣播時:
List<Socket> sos=ss.getSos();
Iterator<Socket> i=sos.iterator();
Socket temps=null;
while(i.hasNext()){
temps=(Socket)i.next();
os=new PrintWriter(temps.getOutputStream());
os.println(mess);
os.flush();
}

8、C# socket 伺服器端 如何向所有的客戶端發送消息(伺服器擁有客戶端的socket)?

首先建議使用一個線程向所有客戶端發送消息;
在寫一個方法發送消息, 方法里內面需要 消息和socket 參數;
Thread tSend= new Thread(SendAll);

private void SendAll()
{
//遍歷所有的容Socket,調用Send(string msg,Socket socket)方法
//不知道你的Socket放到哪裡,如果放到集合就遍歷集合挨個調用
}

private void Send(string msg,Socket socket)
{
byte[] buffer = Encoding.Default.GetBytes(msg);
socket.Send(buffer);
}

9、socket 伺服器給指定的客戶端發消息該怎麼處理

這種做法是不是只有在客戶端連接到伺服器才可以,如果沒有連接到伺服器,在用戶列表就回找不到對應答的socket,這樣就不可以發送了,是不是這樣?如果我想在客戶端沒有連接到伺服器的情況下發送信息給該客戶端(這個時候可能在伺服器端保存這個信息吧,但是怎麼保存這個信息呢?是保存在資料庫還是在內存中?),然後當該客戶端連接上伺服器後就把這個信息發給他.有沒有這種做法,應該怎麼做?

10、java socket 客戶端是如何向伺服器端發送消息的

伺服器端和客戶端都是通過SOCKET來進行通信的,首先產生一個 socket實例,通過這個實例,伺服器端調用accept這個方法接收來自客戶端發送的信息.但是在產生socket實例的時候必須初始化一個埠.用來負責接受客戶端的請求!
客戶端要給伺服器發送消息也必須產生一個socket實例,初始化的時候必須指定伺服器的IP地址,並且指定服務接收的埠號,這樣客戶端才能找到伺服器要接收的地方,找到地方就可以發送過去了。和你寫信一樣。找到地址
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter out = new PrintWriter(socket.getOutputStream());

BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
這個只是用來獲取一個從鍵盤的一個流.傳送給伺服器端的數據都是通過流來表示的。意思是是鍵盤輸入的一個位元組轉化成字元流.並輸出或者寫入!

與socket伺服器發消息相關的知識