c語言socket伺服器怎么給客戶端發訊息

2022-10-22 08:15:13 字數 3192 閱讀 8883

1樓:匿名使用者

你的檔案中的問題

// 會阻塞程序,直到有客戶端連線上來為止

// 既然是直到有客戶端連線上,那麼就要弄明白哪個是與客戶端連線的套接字

// sockclient就是與客戶端連線的套接字

//接收並列印客戶端資料

recv(sockclient, recvbuf, 100, 0);

printf("%s\n", recvbuf);

// 所以此處,應該把sockserver改為sockclient

send(/*sockserver*/sockclient, sendbuf, 100, 0);

ps:伺服器客戶端通訊,是要保持伺服器與客戶端的連線。

而不能這樣立即關閉,如果設定不對,立即關閉,緩衝區的資料是會丟失的。那客戶端也就不會再收到資料了。

你可以加sleep(10000);來測是通訊過程

//關閉socket

closesocket(sockclient);

2樓:匿名使用者

最好的方法是:每一客戶端用唯一的id來標示, 就像qq號一樣, 在客戶端連線伺服器,傳送自己的id, 然後和相應產生的socket進行繫結, 一個客戶端向另一個客戶端傳送資訊時,要求在資料包裡包含對方的id號。可以定義一個型別下列的資料結構對資料包進行封裝:

type struct _sdata sdata, *psdata;

c語言socket程式設計要怎麼實現伺服器可以發訊息給客戶端?

3樓:匿名使用者

繫結兩個埠,一個專門傳送,一個專門接收

c語言socket伺服器怎麼給客戶端發訊息

4樓:山成褒庚

最好的方法是:每一客戶端用唯一的id來標示,就像qq號一樣,

在客戶端連線伺服器,傳送自己的id,

然後和相應產生的socket進行繫結,

一個客戶端向另一個客戶端傳送資訊時,要求在資料包裡包含對方的id號。可以定義一個型別下列的資料結構對資料包進行封裝:

type

struct

_sdata

sdata,

*psdata;

5樓:騎富貴容嫻

你的檔案中的問題

//會阻塞程序,直到有客戶端連線上來為止

//既然是直到有客戶端連線上,那麼就要弄明白哪個是與客戶端連線的套接字//

sockclient就是與客戶端連線的套接字sockclient

=accept(sockserver,

(sockaddr*)&addrclient,&len);

//接收並列印客戶端資料

recv(sockclient,

recvbuf,

100,

0);printf("%s\n",

recvbuf);

//所以此處,應該把sockserver改為sockclientsend(/*sockserver*/sockclient,sendbuf,

100,

0);ps:伺服器客戶端通訊,是要保持伺服器與客戶端的連線。

而不能這樣立即關閉,如果設定不對,立即關閉,緩衝區的資料是會丟失的。那客戶端也就不會再收到資料了。

你可以加sleep(10000);來測是通訊過程//關閉socket

closesocket

(sockclient);

請問c語言socket程式設計客戶端如何與客戶端通訊的啊

6樓:願好問

客戶端跟伺服器是一個相對的概念,比如:

兩臺機子a跟b,如果是a向b請求連線,那麼a就是客戶端,b就是伺服器;相反,如果b向a請求連線,那麼這個時候b是客戶端,a就是伺服器了。

所以,如果你只想要2臺機子通訊,那麼直接socket連線就可以了,如果是a,b,c三臺機器通訊,加入a是伺服器,b跟c是客戶端,想要b跟c通訊,那麼可以有兩種方法,

1. b向伺服器a發訊息,然後伺服器**給c2. b直接建立一個到c的連線,或者c直接建立一個到b的連線,b給c發訊息。

7樓:雨光小寶

這種情況是,多臺客戶端連線服務端,fd = accept()。但是隻以最後的fd保持,也就是第一個客戶端連線後,能夠收發資料,但是第二個客戶端接入後,第一個不能收發資料,第二個可以。。。。問題出在,你的fd是個全域性的,每次都會改變,系統收發資料僅僅以最後一次處理,所以不能多客戶端連線,要解決要用併發機制。

解決方法是多程序或多執行緒,每當accept一個新的客戶端連線後,返回一個控制代碼fd後,建立一個程序。該程序儲存該次的fd收發資料(fork後的子程序拷貝父程序的資源,所以下次fd改變後,該子程序不會影響,這裡是多程序的問題,可以研究下,想想)。或者多執行緒,多執行緒麻煩點,就不說了。

c語言socket程式設計怎麼實現2個客戶端之間通訊

8樓:匿名使用者

如果只是兩個客戶bai端和一個伺服器,可du通zhi過伺服器**即可,兩個客戶端dao連線到服務回器,伺服器答把從a接收到的發給b,把從b接收到的發給a即可,如果要做成多個客戶端的,則要給各個客戶端分配id,服務端好根據各個客戶端和訊息要**送給客戶端的id來確定訊息傳送物件。

9樓:匿名使用者

11111111111111111111

誰能用c語言寫個最簡單socket通訊服務端和客戶端示例

10樓:碧血玉葉花

網路的socket資料傳輸是一種特殊的i/o,socket也是一種檔案描述符。socket也具有一個類似於開啟檔案的函式呼叫socket(),該函式返回一個整型的socket描述符,隨後的連線建立、資料傳輸等操作都是通過該socket實現的。

下面用socket實現一個windows下的c語言socket通訊例子,這裡我們客戶端傳遞一個字串,伺服器端進行接收。

【伺服器端】

#include "stdafx.h"

#include

#include

#include

#define server_port 5208 //偵聽埠void main()

手機socket通訊連線pc伺服器區域網可以通但是

socket客戶端不用開放埠的,只需要連線到伺服器的埠就行了。你可以用tel 試試連線到你的伺服器端,看看伺服器埠是否正常工作。socket通訊,伺服器所在的區域網必須在路由器設定對映ip埠,這樣外部才可以連線。為什麼客戶端不用?客戶端使用隨機埠,穿透nat的時候,nat會為其分配新埠,然後自動建立...

Kangle伺服器怎么安裝部署SSL證書

kangle easypanel 安裝ssl證書網頁連結 登入kangle頁面管理介面,選擇 管理 所有 選擇要繫結證書的域名 ssl證書,進行以下兩個操作。1 將證書檔案中的公鑰檔案 1 test.wosign.com bundle.crt 使用記事本開啟,將內容複製貼上到 中的1位置。2 將證書...

linux伺服器配置https,怎麼給linux伺服器配置https

截止回答時,該 https已經正確配置,可以正常訪問,一般出現上述問題由於預設檔名設定不正確,根目錄設定不正確,列目錄功能異常開啟等原因 配置問題,我用nginx的,看不懂你這問題,把人家提供的證書放到合適的位置,網上找些配置例子,基本就行了。怎麼給linux伺服器配置https linux大多有f...