CP Socket編程 C/C++實現 (Windows Platform SDK)

來源:互聯網
上載者:User
keyit.focus();}
C語言TCP程式中的Hello World。以前一直用OO語言,現在用C語言寫著玩,思想上有點轉不過來彎,o(∩_∩)o...
Server:

#pragma comment(lib, "ws2_32.lib")

#include <Winsock2.h>

#include <stdio.h>



void main()

{

//版本協商

WORD wVersionRequested;

WSADATA wsaData;

int err;



wVersionRequested = MAKEWORD(1,1); //0x0101

err = WSAStartup(wVersionRequested,&wsaData);

if(err!=0)

{

return;

}



if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)

//wsaData.wVersion!=0x0101

{

WSACleanup();

return;

}

//建立Socket

SOCKET sockSvr = socket(AF_INET,SOCK_STREAM,0);

//建立IP地址和連接埠

SOCKADDR_IN addrSvr;

addrSvr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

addrSvr.sin_family = AF_INET;

addrSvr.sin_port = htons(6000);

//綁定連接埠監聽

bind(sockSvr,(SOCKADDR*)&addrSvr,sizeof(SOCKADDR));

listen(sockSvr,5);



sockaddr_in addrClient;

int len = sizeof(sockaddr);

while(true)

{

//阻塞方法,獲得一個客戶Socket串連

SOCKET sockConn = accept(sockSvr,(sockaddr*)&addrClient,&len);

char sendbuffer[128];

sprintf(sendbuffer,"Welcom %s!",inet_ntoa(addrClient.sin_addr));

//向客戶Socket發送資料

send(sockConn,sendbuffer,strlen(sendbuffer)+1,0);

char recvbuffer[128];

//從客戶Soc接受資料

recv(sockConn,recvbuffer,128,0);

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

//關閉Socket

closesocket(sockConn);

}

closesocket(sockSvr);

//釋放Winsock資源

WSACleanup();

}

Client:

#pragma comment (lib,"ws2_32.lib")

#include <Winsock2.h>

#include <stdio.h>



void main()

{

//版本協商

WORD wVersionRequested;

WSADATA wsaData;

int err;



wVersionRequested = MAKEWORD(1,1); //0x0101

err = WSAStartup(wVersionRequested,&wsaData);

if(err!=0)

{

return;

}



if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)

//wsaData.wVersion!=0x0101

{

WSACleanup();

return;

}

//建立連向伺服器的通訊端

SOCKET sock = socket(AF_INET,SOCK_STREAM,0);

//建立地址資訊

SOCKADDR_IN hostAddr;

hostAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");

hostAddr.sin_family = AF_INET;

hostAddr.sin_port = htons(6000);

//串連伺服器

connect(sock,(sockaddr*)&hostAddr,sizeof(sockaddr));



char revBuf[128];

//從伺服器獲得資料

recv(sock,revBuf,128,0);

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

//向伺服器發送資料

send(sock,"Hello Host!",12,0);

closesocket(sock);

}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.