C/C++使用socket實現server和client
阿新 • • 發佈:2019-02-10
Server程式碼
#include <winsock2.h>
#include <stdio.h>
#pragma comment (lib,"ws2_32")
int main(int argc,char *argv[])
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);//初始化
SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
sockaddr_in sockaddr;
sockaddr.sin_family = PF_INET;
sockaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1" );
sockaddr.sin_port = htons(234);
bind(s,(const struct sockaddr *)&sockaddr,sizeof(sockaddr));
//在本地繫結234埠
listen(s,1);//開始監聽
//wait for connection
SOCKET client;
int nsize = sizeof(SOCKADDR);
SOCKADDR clientAddr;
printf("wait for connection...\n");
client = accept(s,&clientAddr,&nsize);//等待客戶端連線
//start send message
printf("start to send msg...\n");
send(client,"hello",5,NULL);
closesocket(client);
closesocket(s);
WSACleanup();
return 0;
}
Client程式碼
#include <winsock2.h>
#include <stdio.h>
#pragma comment (lib,"ws2_32")
int main(int argc,char *argv[])
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);//初始化
SOCKET s = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
sockaddr_in sockaddr;
sockaddr.sin_family = PF_INET;
sockaddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
sockaddr.sin_port = htons(234);//設定要連線的IP和埠
connect(s,(SOCKADDR*)&sockaddr,sizeof(SOCKADDR));//tcp連線
char buffer[200] = {0};
recv(s,buffer,200,NULL);//
printf("response:%s\n",buffer);
WSACleanup();
return 0;
}