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...