注意: 這裡建立檔案是在xcode的osx下面的命令列建立的 因為一會客戶端使用的ios模擬器,而xcode是不能同時執行兩個模擬器的
實現socket通訊無論是客戶端還是伺服器端都需要引入四個檔案
#import #import #import #import
搭建socket通訊大致分為四個步驟
1.建立socket
2.繫結socket和埠號
3.監聽
4.接收來自客戶端的請求,連線之後會產生新的socket,專門用來跟客戶進行資料傳輸
5.接收資料 或者 傳送資料
6.需要的時候關閉socket
每乙個步驟的具體實現如下1.建立socket
socket()函式有乙個int的返回值, 在下面的步驟中 都會用到這個返回值
// 1.建立socket
// socket函式引數含義如下所示: socket(<#int#>, <#int#>, <#int#>)
// 引數1.網路層對應的協議是ipv4(af_net)還是ipv6(af_net16)
// 引數2.使用的是tcp還是udp傳輸 (引數點進去看 有系統注釋)
// 引數3.一般情況下給0,由系統根據第二個引數自行決定。
int socketdescripter = socket(af_inet, sock_stream, 0);
2.繫結socket和埠號
繫結socket和埠需要使用函式 bind(<#int#>, <#const struct sockaddr *#>, <#socklen_t#>)
引數1 就是我們步驟1建立的 socketdescripter
引數2 是乙個 系統sockaddr的結構體 裡面包含了我們需要繫結的資訊
引數3 結構體的大小
// 2.繫結socket和埠號
struct sockaddr_in sockaddr = ;
// 設定網路層協議
sockaddr.sin_family = af_inet;
// 設定ip位址
sockaddr.sin_addr.s_addr = inaddr_any;
// 設定埠號---網路位元組序
sockaddr.sin_port = htons(8910);
bind(socketdescripter, (const struct sockaddr *)&sockaddr, sizeof(sockaddr));
3.監聽
4.接收來自客戶端的請求,連線之後會產生新的socket,專門用來跟客戶進行資料傳輸
5.接收資料 或者 傳送資料
6.需要的時候關閉socket
// 3.監聽
listen(socketdescripter, 40);
while (1) ;
unsigned int length = sizeof(clientsockaddr);
//建立乙個socket專門用來和使用者端進行通訊
int clientsocket = accept(socketdescripter, (struct sockaddr *restrict)&clientsockaddr, &length);
// 5.接收資料或者是傳送資料
printf("accept:%s\n",inet_ntoa(clientsockaddr.sin_addr));
send(clientsocket, "hello world", 12, 0);//這個函式就是傳送我們的內容
// // 6.關閉socket
// close(clientsocket);
}
到這裡 我們伺服器端就建立好了 整個頁面的**如下 可以全部copy使用
#import #import #import #import #import int main(int argc, const char * argv) ;
// 設定網路層協議
sockaddr.sin_family = af_inet;
// 設定ip位址
sockaddr.sin_addr.s_addr = inaddr_any;
// 設定埠號---網路位元組序
sockaddr.sin_port = htons(8910);
bind(socketdescripter, (const struct sockaddr *)&sockaddr, sizeof(sockaddr));
// 3.監聽
listen(socketdescripter, 40);
while (1) ;
unsigned int length = sizeof(clientsockaddr);
int clientsocket = accept(socketdescripter, (struct sockaddr *restrict)&clientsockaddr, &length);
// 5.接收資料或者是傳送資料
printf("accept:%s\n",inet_ntoa(clientsockaddr.sin_addr));
send(clientsocket, "hello world", 12, 0);
// // 6.關閉socket
// close(clientsocket);
}
}return 0;
}
C 使用Socket實現伺服器與客戶端的通訊
一 實驗要求 1.設計程式,分別構建通訊的兩端 伺服器端和客戶端應用程式,套接字型別為面向連線的socket,自己構建雙 方的應答模式,實現雙方的資料的傳送和接收 s發給 c,c發給 s 2.服務端程式能響應單個或任意多個客戶端連線請求 服務端能向單個客戶傳送訊息,支援 訊息給所有客戶 端。3.通訊...
投票系統實現(socket套接字)
web端 投票伺服器 主伺服器 1.在直播場景的時候,web端發起投票 乙個字典,包括標題,選項,等內容 即把資料儲存在主伺服器資料庫,然後把該資料傳送給投票伺服器 資料大小限制在8k,因為udp網路層給鏈路層傳輸的時候大於8k很容易丟包。而setsockopt函式改變的緩衝區只是在網路層修改 we...
python實現用socket傳輸檔案
python傳輸檔案最重要的有兩步 1 將要傳輸的檔案的資訊傳送過去,包括檔案包,大小以及其它資訊 2 傳送端讀取檔案內容並傳送過去,接受端將快取裡面的內容寫入檔案.傳送端 coding cp936 from socket import import os import struct addr 19...