// soClient.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <winsock2.h>
#pragma comment(lib,"ws2_32.lib") int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsadata;
WORD dVer=MAKEWORD(,);
WSAStartup(dVer,&wsadata); SOCKET S=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(S==INVALID_SOCKET)
{
return FALSE;
}
sockaddr_in serverAddr;
serverAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
serverAddr.sin_family=AF_INET;
serverAddr.sin_port=htons();
if(::connect(S,(LPSOCKADDR)&serverAddr,sizeof(serverAddr))==SOCKET_ERROR)
{
if(WSAGetLastError()==)
{
printf("服务器未开启");
}
return FALSE;
} char buff[];
int irecv=::recv(S,buff,,);
if(irecv>)
{
buff[irecv] = '\0'; //返回数据不会结束所以人工添加
printf("返回数据为:%s",buff);
} closesocket(S);
return ;
}
服务器
// soServer.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include "winsock2.h"
#pragma comment(lib,"ws2_32.lib") int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsadata;
WORD dVer=MAKEWORD(,);
if(WSAStartup(dVer,&wsadata)!=)
{
return FALSE;
} sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_addr.S_un.S_addr=INADDR_ANY;
sin.sin_port=htons();
SOCKET S=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(::bind(S,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR)
{
return FALSE;
} if(::listen(S,)==SOCKET_ERROR)
{
return FALSE;
} sockaddr_in remoteAddr;
int nAddrLen = sizeof(remoteAddr);
SOCKET sClient;
char text[]="you have connected!welcome!";
printf("等待接受连接。\r\n");
while(TRUE)
{
sClient=::accept(S,(LPSOCKADDR)&remoteAddr,&nAddrLen);
if(sClient==SOCKET_ERROR)
{
printf("获取失败");
continue;
}
printf("接收到新连接:%s",inet_ntoa(remoteAddr.sin_addr));
send(sClient,text,strlen(text),);
closesocket(sClient);
}
closesocket(S);
return ;
}