socket程式設計

2021-08-30 01:25:24 字數 1968 閱讀 3272

[color=cyan]1、socket伺服器端:[/color]

下面是孫鑫vc詳解裡面的伺服器端的例子:

#include

#include

void main()

if (lobyte(wsadata.wversion)!=1||

hibyte(wsadata.wversion)!=1)

//建立監聽的套接字

socket socksrv=socket(af_inet,sock_stream,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=htonl(inaddr_any);//把u_long的主機位元組順序轉換為tcp/ip網路位元組順序

addrsrv.sin_family=af_inet;

addrsrv.sin_port=htons(6000);

//繫結套接字

bind(socksrv,(sockaddr*)&addrsrv,sizeof(sockaddr));

//將套接字設定為監聽模式,準備接受使用者請求

listen(socksrv,5);

sockaddr_in addrclient;

int len=sizeof(sockaddr);

printf("%s\n","welcome,the serve is started...");

while (1) }

[color=red]注意:需要包含標頭檔案,並且在工程設定的link裡面加上ws32_2.dll[/color]

[color=cyan]如果在vc中還有乙個簡單的載入套接字的方法:[/color]

if (!afxsocketinit())

這個不需要包含上面注裡面的標頭檔案和ws2_32.lib庫就可以實現載入套接字。

[color=cyan]2、socket客戶端:[/color]

socket客戶端同樣需要先載入套接字,然後建立套接字,不過之後不用繫結和監聽了,而是直接連線伺服器,傳送相關請求。

同樣貼出孫鑫vc詳解裡面的客戶端的例子:(不是我偷懶,是人家實在寫的太好,無法超越 :wink: )

#include

#include

void main()

if (lobyte(wsadata.wversion)!=1||

hibyte(wsadata.wversion)!=1)

//建立套接字

socket sockclient=socket(af_inet,sock_stream,0);

sockaddr_in addrsrv;

addrsrv.sin_addr.s_un.s_addr=inet_addr("127.0.0.1");//把u_long的主機位元組順序轉換為tcp/ip網路位元組順序

addrsrv.sin_family=af_inet;

addrsrv.sin_port=htons(6000);

//向伺服器傳送請求

connect(sockclient,(sockaddr*)&addrsrv,sizeof(sockaddr));

//接受資料

char recbuf[100];

recv(sockclient,recbuf,100,0);

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

//傳送資料

send(sockclient,"this is 扈修非",strlen("this is 扈修非")+1,0);

//關閉套接字

closesocket(sockclient);

wsacleanup();

}

[color=red]需要載入的標頭檔案和庫同上[/color]

socket程式設計

一直以為serversocket accept之後客戶端才能發資訊,實驗後得出如下結論 1 serversocket沒有accept時,client是可以傳送資訊到server端的。2 serversocket accept之後,正在處理訊息時,client也是可以傳送資訊到server端。如果se...

Socket程式設計

對tcp ip udp socket程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問 1.什麼是tcp ip udp?2.socket在 呢?3.socket是什麼呢?4.你會使用它們嗎?什麼是tcp ip udp?tcp ip transmission cont...

socket程式設計

建立socket 建立乙個 socket,它可用於在基於 tcp ip 的網路 如 internet 上通訊。socket s new socket addressfamily.internetwork,sockettype.stream,protocoltype.tcp 若要使用 udp 而不是 ...