// CppSocket.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "stdio.h"
#include "WinSock2.h"
#include "WinDef.h"
int _tmain(int argc, _TCHAR* argv[])
{
// 初始化WS2_32.dll
WSADATA wsaData;
BYTE minorVer = 2;
BYTE majorVer = 2;
WORD sockVersion = MAKEWORD(minorVer, majorVer);
if(WSAStartup(sockVersion, &wsaData) != 0)
{
exit(0);
}
// 创建套节字
SOCKET sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sListen == INVALID_SOCKET)
{
printf("Failed socket() \n");
return 0;
}
// 填充sockaddr_in结构
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(4567);
sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
// 绑定这个套节字到一个本地地址
if(bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
{
printf("Failed bind() \n");
return 0;
}
// 进入监听模式
if(listen(sListen, 0) == SOCKET_ERROR)
{
printf("Failed listen() \n");
return 0;
}
// 循环接受客户的连接请求
sockaddr_in remoteAddr;
int nAddrLen = sizeof(remoteAddr);
SOCKET sClient;
char szText[] = " TCP Server Demo正常运行! \r\n";
while(TRUE)
{
// 接受一个新连接
sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);
if(sClient == INVALID_SOCKET)
{
printf("Failed accept()");
continue;
}
printf(" 接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));
// 向客户端发送数据
send(sClient, szText, strlen(szText), 0);
// 接收数据
char buff[512];
int nRecv = recv(sClient,buff, 512, 0);
if(nRecv > 0)
{
buff[nRecv] = '\0';
printf(" 接收到数据:%s", buff);
}
// 关闭同客户端的连接
closesocket(sClient);
}
// 关闭监听套节字
closesocket(sListen);
return 0;
}
//
在 stdafx.h 中添加
#pragma comment(lib, "ws2_32.lib")
#include "stdafx.h"
#include "stdio.h"
#include "WinSock2.h"
#include "WinDef.h"
int _tmain(int argc, _TCHAR* argv[])
{
// 初始化WS2_32.dll
WSADATA wsaData;
BYTE minorVer = 2;
BYTE majorVer = 2;
WORD sockVersion = MAKEWORD(minorVer, majorVer);
if(WSAStartup(sockVersion, &wsaData) != 0)
{
exit(0);
}
// 创建套节字
SOCKET sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sListen == INVALID_SOCKET)
{
printf("Failed socket() \n");
return 0;
}
// 填充sockaddr_in结构
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(4567);
sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
// 绑定这个套节字到一个本地地址
if(bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
{
printf("Failed bind() \n");
return 0;
}
// 进入监听模式
if(listen(sListen, 0) == SOCKET_ERROR)
{
printf("Failed listen() \n");
return 0;
}
// 循环接受客户的连接请求
sockaddr_in remoteAddr;
int nAddrLen = sizeof(remoteAddr);
SOCKET sClient;
char szText[] = " TCP Server Demo正常运行! \r\n";
while(TRUE)
{
// 接受一个新连接
sClient = accept(sListen, (SOCKADDR*)&remoteAddr, &nAddrLen);
if(sClient == INVALID_SOCKET)
{
printf("Failed accept()");
continue;
}
printf(" 接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));
// 向客户端发送数据
send(sClient, szText, strlen(szText), 0);
// 接收数据
char buff[512];
int nRecv = recv(sClient,buff, 512, 0);
if(nRecv > 0)
{
buff[nRecv] = '\0';
printf(" 接收到数据:%s", buff);
}
// 关闭同客户端的连接
closesocket(sClient);
}
// 关闭监听套节字
closesocket(sListen);
return 0;
}