1. 程式人生 > >C/C++使用socket實現server和client

C/C++使用socket實現server和client

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; }

這裡寫圖片描述