如何用c語言在linu下通過socket實現建立服務

2021-03-22 16:58:13 字數 3555 閱讀 1495

1樓:cx星宇

不用多執行緒~~最簡單的服務端用個while死迴圈就行了。

給你一個 epoll模型的。

**傳不上去~~你留個****

在linux下用c語言寫個socket,一個伺服器,十個客戶端。

2樓:花落へべ若相惜

多給點分,寫完就給你貼上來

3樓:

伺服器用多執行緒,,,-lpthread,,,其他的不說了linux和windows都可以的自己修改下,,不用c++就用api

4樓:匿名使用者

這麼混不如不搞了。客戶端connect,伺服器 listen然後accept,剩下的傳數字 學過c的誰不會,注意位元組序和封裝訊息,

5樓:

拒絕嚴峻的冶煉,礦石並不比被髮掘前更有價值。

c語言編寫socket,伺服器怎麼同時登陸兩個客戶端啊!??

6樓:匿名使用者

樓上2位都有點兒傻.

一個用c#來糊弄人.

其實msdn中就有這個例子.不過沒有後面這幾個指令.

你參考ftp就可以了.linux下面的ftp基本都是c語言的.

關於在linux下用c語言實現多客戶端和伺服器端聊天的實現! 5

7樓:匿名使用者

你的意思是伺服器監聽同一埠,然後根據不同客戶端執行不同的伺服器程式?如果是,自然少不了select或if-elseif-then

8樓:

圖形程式設計我的不會,用多程序或多執行緒吧,每accept 一個連線,建立一個執行緒或程序。

請教linux下伺服器用select處理一個socket對應的多個客戶端

9樓:

如果客戶端併發連線數不是很大,比如50個以下,可以用如下模型:建立一個監聽主執行緒,迴圈監聽埠。當有客戶端連線時,建立客戶端通訊執行緒,並保留客戶端socket到連結串列中。

當客戶端斷開連線時,從socket連結串列中刪除該socket。

同一客戶端和同一個伺服器同時能建立幾個socket

10樓:

理論上可以建立65535個,也就是埠數相同的socket

不過實際上不可能建立這麼多,一是因為沒有必要(沒有什麼工作必須要這麼多socket同時做才能完成),二是有的埠被作業系統已經佔用了(比如1024以下的埠都是保留埠,應用程式一般不應該去嘗試佔用這些埠)

11樓:匿名使用者

65535。

儘量不要建立那麼多,不然socket會耗盡你係統的資源的

求在linux環境下實現一個伺服器對應多個客戶端的程式

12樓:匿名使用者

要實現你這個功能,你得學習c/s模式通訊服務,這不是簡簡單單的一個程式,涉及服務端程式,客戶端程式。

簡單的c/s開發使用socket通訊,也可以使用中介軟體(tuxedo...).

建議你安裝一個tuxedo,裡面有簡單的demo例項就是你需要的。

linux下,socket伺服器和客戶端tcp方式建立了連線,如何使它們之間相互傳送訊息?

13樓:輕評點滴

1.可能是在獲取客戶端的ip和埠時,處理出現問題,導致無法正確傳送到客戶端。

2.客戶端是否使用固定的埠來接收伺服器資訊,或伺服器是否正確傳送到客戶端的相應的埠。

3.通過上面分析,最大可能是在處理埠出現問題,請重新檢查。

4.實在不行,最好使用丟擲異常方法來捕獲錯誤訊息,或是通過一步一步除錯分析資料傳送過程。

14樓:永恆の眷戀

你的接收端有沒有放在迴圈或者執行緒裡反覆接收?有沒有設定同步,如果沒設定同步的話就不是沒收到,而是收的速度太快了,資料混亂了。既然說了已經能接收到一行訊息了,埠應該是沒問題的,因為埠問題主要發生在繫結階段,既然能接收到,說明繫結沒問題。

最大的問題應該就是訊息同步問題,可以用一收一發的方式,接收放到if裡,因為當recv的返回值大於0(就是直接if(recv(...))時),再傳送下一條訊息

15樓:鬼火狼煙

檢查你的程式是否正確使用了建立連線後生成的,代表這個連線的唯一socket物件。

16樓:陳行

通過系統呼叫的函式可以訪問,比如:int read(int socketfd,char *buffer,size_t size) ; int write(int socketfd,char *buffer,size_t size); 這是兩個讀取資料和寫入資料的函式原型(具體的型參名字忘記了,不過型參型別是正確的)。網上有個聊天程式的源**,你可以看看,希望對你有幫助。

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

17樓:匿名使用者

socket 伺服器給指定的客戶端發訊息該怎麼處理(tcp)(c語言)

多個客戶端之間進行通訊,通過伺服器**的形式,現在客戶端1請求向客戶端2傳送訊息,先把訊息傳送到伺服器,伺服器怎麼才能把訊息**到客戶端2而不是**給客戶端3或者他自己。

18樓:山成褒庚

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

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

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

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

type

struct

_sdata

sdata,

*psdata;

19樓:騎富貴容嫻

你的檔案中的問題

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

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

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);

在windows下,如何用純C語言實現socket網路程式設計

mfc只是對socket進行了一些bai 封裝du,大部分人做 網路編zhi程 都是用dao 的原始的socket,比如如下介面都可版以在權c下進行呼叫1.socket 2.bind 3.connect 4.listen 5.accept 6.send 和recv 7.sendto 和recvfro...

如何用c語言建立檔案?並按格式儲存

儲存用fwrite 來完成,建立用fopen 來完成。示例 如下 include int main printf 輸入要建立的檔名 gets file name file fp fopen file name,at if fp null fprintf fp,s年 s月 s日 year,month,...

如何用C語言編寫連結串列結點查詢的演算法

include using namespace std class chain class chainnode class chain void fun 查詢函式 private chainnode first 指向第一個節點指標 chain chain chain chain void chain...