需要调用Windows库函数,请在工程设置中添加链接库
VC6.0中:工程->设置->连接->对象/库模块 ws2_32.lib kernel32.lib user32.lib gdi32.lib................
VS2010 2012中:属性->连接器->输入->附加依赖项->编辑,在里面添加ws2_32.lib就行了
客户端:
#include <Winsock2.h>
#include <stdio.h>
#include <cstring>
void main()
{
WORD wVersionRequested;
WSADATA wsaDate;
int err;
wVersionRequested = MAKEWORD(1,1);
err = WSAStartup (wVersionRequested,&wsaDate);
if(err !=0)
{
return;
}
if (LOBYTE(wsaDate.wVersion) !=1 || HIBYTE (wsaDate.wVersion) !=1)
{
WSACleanup();
return;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr .S_un.S_addr=inet_addr("222.25.171.190");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
connect (sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
char recvBuf[500];
while(true)
{
memset(recvBuf,0,sizeof(recvBuf));
recv(sockClient,recvBuf,500,0);
printf("%s\n",recvBuf);
char sendBuf[500];
memset(sendBuf,0,sizeof(sendBuf));
gets(sendBuf);
char myWords[1000]="222.25.177.71˵:";
strcat(myWords,sendBuf);
send(sockClient,myWords,strlen(myWords)+1,0);
}
closesocket(sockClient);
WSACleanup();
}
服务器端:
#include<Winsock2.h>
#include<stdio.h>
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{
return;
}
if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf,"Welcome %s to http://wwwss",inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
recv(sockConn,recvBuf,100,0);
printf("%s\n",recvBuf);
closesocket(sockConn);
}
}