服务器端代码如下:
#include <stdio.h>
#include <WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
int rs;
WSADATA wsaData;
WORD sock_version=MAKEWORD(2,2);
rs=WSAStartup(sock_version,&wsaData);
if (NO_ERROR!=rs)
{
printf("Error at WSAStartUp():%ld",WSAGetLastError());
return -1;
}
SOCKET s;
s=socket(AF_INET,SOCK_STREAM,0);
if (INVALID_SOCKET==s)
{
printf("Error at socket():%ld",WSAGetLastError());
WSACleanup();
return -1;
}
struct sockaddr_in localAddr;
memset(&localAddr,0,sizeof(localAddr));
localAddr.sin_family=AF_INET;
localAddr.sin_addr.s_addr=htonl(INADDR_ANY);
localAddr.sin_port=htons(5050);
rs=bind(s,(struct sockaddr*)&localAddr,sizeof(localAddr));
if (SOCKET_ERROR==rs)
{
printf("Error at bind():%ld",WSAGetLastError());
WSACleanup();
return -1;
}
rs=listen(s,10);
if (SOCKET_ERROR==rs)
{
printf("Error at listen():%ld",WSAGetLastError());
WSACleanup();
return -1;
}
while (1)
{
SOCKET conn;
char buffer[1024];
int n;
conn=accept(s,NULL,NULL);
if (INVALID_SOCKET!=conn)
{
n=recv(conn,buffer,1024,0);
printf("%s\n",buffer);
closesocket(conn);
}
}
WSACleanup();
return 0;
}
客户端代码如下:
#include <stdio.h>
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
int main()
{
WSADATA wsaData;
WORD winsock_version=MAKEWORD(2,2);
WSAStartup(winsock_version,&wsaData); //加载winsock2
SOCKET sockfd;
struct sockaddr_in remoteAddr;
sockfd=socket(AF_INET,SOCK_STREAM,0); //create TCP socket
if (sockfd==INVALID_SOCKET)
{
printf("Error at socket():%ld",WSAGetLastError());
WSACleanup();
printf("client create socket failure\n");
return -1;
}
memset(&remoteAddr,0,sizeof(remoteAddr));
remoteAddr.sin_family=AF_INET;
remoteAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
remoteAddr.sin_port=htons(5050);
int rs;
rs=connect(sockfd,(struct sockaddr*)&remoteAddr,sizeof(remoteAddr));
if (SOCKET_ERROR==rs)
{
printf("Error at connect():%ld",WSAGetLastError());
WSACleanup();
printf("client Failed to connect\n");
return -1;
}
char buffer[]="this is first e-mail:hello world!!!";
send(sockfd,buffer,sizeof(buffer),0);
WSACleanup();
return 0;
}