vc++实现的tcpsocket客户端和服务端示例
TcpServer
#include<WinSock2.h>
#include<stdio.h>
#pragmacomment(lib,"ws2_32.lib")
intmain()
{
//initialsocketlibrary
WORDwVerisonRequested;
WSADATAwsaData;
interr;
wVerisonRequested=MAKEWORD(1,1);
err=WSAStartup(wVerisonRequested,&wsaData);
if(err!=0)
{
return-1;
}
//if(LOBYTE(wsaData.wVersion)!=1||
// HIBYTE(wsaData.wHighVersion)!=1)
//{
// WSACleanup();
// return-1;
//}
//createsocket
SOCKETsockServer=socket(AF_INET,SOCK_STREAM,0);
//bindsocket
SOCKADDR_INaddrServer;
addrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrServer.sin_family=AF_INET;
addrServer.sin_port=htons(6000);
bind(sockServer,(SOCKADDR*)&addrServer,sizeof(addrServer));
//listen
listen(sockServer,5);
SOCKADDR_INaddrClient;
intlen=sizeof(addrClient);
while(1)
{
//accept
SOCKETsockConnection=accept(sockServer,(SOCKADDR*)&addrClient,&len);
//send
charsendBuf[100];
sprintf(sendBuf,"Welcome%s",inet_ntoa(addrClient.sin_addr));
send(sockConnection,sendBuf,strlen(sendBuf)+1,0);
//receive
charrecvBuf[100];
recv(sockConnection,recvBuf,100,0);
//
printf("%s",recvBuf);
//closeconnectionsocket
closesocket(sockConnection);
}
}
TcpClient
#include<WinSock2.h>
#include<stdio.h>
#pragmacomment(lib,"ws2_32.lib")
intmain()
{
//initialsocketlibrary
WORDwVerisonRequested;
WSADATAwsaData;
interr;
wVerisonRequested=MAKEWORD(1,1);
err=WSAStartup(wVerisonRequested,&wsaData);
if(err!=0)
{
return-1;
}
//if(LOBYTE(wsaData.wVersion)!=1||
// HIBYTE(wsaData.wHighVersion)!=1)
//{
// WSACleanup();
// return-1;
//}
//createsocket
SOCKETsockClient=socket(AF_INET,SOCK_STREAM,0);
//connectserversocket
SOCKADDR_INaddrServer;
addrServer.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrServer.sin_family=AF_INET;
addrServer.sin_port=htons(6000);
connect(sockClient,(SOCKADDR*)&addrServer,sizeof(addrServer));
//receive
charrecvBuf[100];
recv(sockClient,recvBuf,100,0);
//
printf("%s",recvBuf);
//send
charsendBuf[100]="thisislisi\n";
send(sockClient,sendBuf,strlen(sendBuf)+1,0);
//closeconnectionsocket
closesocket(sockClient);
//cleansocketlibrary
WSACleanup();
}