windows網路程式設計入門

2021-07-01 18:09:00 字數 2605 閱讀 1960

windows sockets 的版本:

標頭檔案:winsock.h

庫檔案:wsock32.lib

動態困:winsock.dll

標頭檔案:winsock2.h

庫檔案:ws2_32.lib

動態困:ws2_32.dll

服務端:

wsadata			wsd;			//wsadata變數

socket sserver; //伺服器套接字

socket sclient; //客戶端套接字

sockaddr_in addrserv;; //伺服器位址

char buf[ buf_size]; //接收資料緩衝區

int retval; //返回值

//初始化套接字動態庫

if (wsastartup(makeword(2,2),&wsd) != 0)

//建立套接字

sserver = socket(af_inet,sock_stream,ipproto_tcp);

if (invalid_socket == sserver)

//下一步 繫結套接字

// addrserv.sin_family = af_inet;

addrserv.sin_port = htons(4999);

addrserv.sin_addr.s_addr = inaddr_any;

//繫結套接字

retval = bind(sserver,(lpsockaddr)&addrserv,sizeof(sockaddr_in));

if (socket_error == retval)

//開始監聽

retval = listen(sserver,1);

if (socket_error == retval)

//設定伺服器為監聽狀態,呼叫accept()函式等待客戶端的連線。該函式處於阻塞狀態,直到接受

//了乙個客戶端請求、當該函式返回的時候,新建乙個套接字,同時返回該客戶端的位址。如果呼叫

//失敗,則關閉

sockaddr_in addrclient;

int addrclientlen = sizeof(addrclient);

sclient = accept(sserver,(sockaddr far*)&addrclient, &addrclientlen);

if (invalid_socket == sclient)

//接受並顯示資料

zeromemory(buf,buf_size);

retval = recv(sclient,buf,buf_size,0);

if (socket_error == retval)

cstring str;

str.format("%s",buf);

// afxmessagebox(buf);

m_recv2.setwindowtext(str);

closesocket(sserver); //關閉套接字

closesocket(sclient); //關閉套接字

wsacleanup(); //釋放套接字資源;

客戶端:

wsadata			wsd;			//wsadata變數

socket shost; //伺服器套接字

sockaddr_in servaddr; //伺服器位址

char buf[buf_szie]; //接收資料緩衝區

int retval; //返回值

//初始化套結字動態庫

if (wsastartup(makeword(2,2), &wsd) != 0)

//建立套接字

shost = socket(af_inet, sock_stream, ipproto_tcp);

if(invalid_socket == shost)

//設定伺服器位址

servaddr.sin_family =af_inet;

servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

servaddr.sin_port = htons((short)4999);

int nservaddlen = sizeof(servaddr);

//連線伺服器

retval=connect(shost,(lpsockaddr)&servaddr, sizeof(servaddr));

if(socket_error == retval)

//向伺服器傳送資料

zeromemory(buf, buf_szie);

strcpy(buf, "mytcp");

retval = send(shost, buf, strlen(buf), 0);

if (socket_error == retval)

//退出

closesocket(shost); //關閉套接字

wsacleanup(); //釋放套接字資源

return 0;

Windows網路程式設計

1.先總結一些會用到的知識 中計算機都分配乙個位址,該位址是乙個 32位的數值表示 客戶端和伺服器通訊的時候需要指定乙個 ip位址 和埠。ip位址 一般是用 internet標準 點分表示法 像a.b.c.d 一樣指定 的,每乙個字母代表乙個位元組的數字 十進位制 八進位制 或十六進製制 從左到右分...

windows網路程式設計

winsock是windows系統下利用socket套接字進行網路程式設計的相關函式,是windows下的網路程式設計介面。winsock在常見的windows平台上有兩個主要的版本,即winsock1和winsock2。編寫與winsock1相容的程式你需要引用標頭檔案winsock.h,如果編寫...

windows網路程式設計

include include include 要使用winsock api,就要包含ws2 32.lib這個庫 pragma comment lib,ws2 32.lib int main int argc,char ar 為埠號賦值 short port if port atoi ar 1 0 ...