server代码段
#define WIN32_LEAN_AND_MEAN
#include <WinSock2.h>
#include <windows.h>
#include <WS2tcpip.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
WORD ver = MAKEWORD(2, 2);
WSADATA dat;
WSAStartup(ver, &dat);
//SOCK_DGRAM IPPROTO_UDP
SOCKET _sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (_sock == INVALID_SOCKET)
{
printf("socket create failed\n");
}
else
{
printf("socket create sucess\n");
sockaddr_in _sin = {};
_sin.sin_family = AF_INET;
_sin.sin_addr.S_un.S_addr = INADDR_ANY;//inet_addr("127.0.0.1")
//_sin.sin_addr.s_addr = htonl(INADDR_ANY);
_sin.sin_port = htons(4567);
int bindresult = bind(_sock, (sockaddr *)&_sin, sizeof(_sin));
if (bindresult == SOCKET_ERROR)
{
printf("socket bind Failed\n");
}
else
{
printf("socket bind sucess\n");
int listenresult = listen(_sock, 5);
if (listenresult == SOCKET_ERROR)
{
printf("socket listen failed\n");
}
else
{
printf("socket listen sucess\n");
sockaddr_in clientAddr = {};
int nAddrLen = sizeof(clientAddr);
SOCKET _csock = INVALID_SOCKET;
_csock = accept(_sock, (sockaddr *)&clientAddr, &nAddrLen);
if (_csock == INVALID_SOCKET)
{
printf("Error,接受到无效客户端socket....\n");
}
char str[INET_ADDRSTRLEN];
printf("new client:%s-%d-%d\n", inet_ntop(AF_INET, &clientAddr.sin_addr, str, sizeof(str)),
clientAddr.sin_port,
clientAddr.sin_family);
//inet_ntoa(clientAddr.sin_addr)
char msgBuff[128] = {};
int nlen = recv(_csock, msgBuff, 128, 0);
printf("client say=%s\n", msgBuff);
if (nlen > 0)
{
char msgbuf[] = "hello client";
send(_csock, msgbuf, (int)strlen(msgbuf) + 1, 0);
}
closesocket(_csock);
}
}
}
closesocket(_sock);
WSACleanup();
getchar();
return 0;
}
client
#define WIN32_LEAN_AND_MEAN
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <WinSock2.h>
#include <windows.h>
#include <WS2tcpip.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
WORD ver = MAKEWORD(2, 2);
WSADATA dat;
WSAStartup(ver, &dat);
SOCKET _sock = socket(AF_INET, SOCK_STREAM, 0);
if (_sock == INVALID_SOCKET)
{
printf("socket create Failed");
}
else
{
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");
int conresult = connect(_sock, (sockaddr*)&_sin, sizeof(_sin));
if (conresult == SOCKET_ERROR)
{
printf("socket connect Failed");
}
else
{
char msgBuff[] = {"hello server"};
send(_sock, msgBuff, (int)strlen(msgBuff) + 1, 0);
char recvbuf[128] = {};
int nlen = recv(_sock, recvbuf, 128, 0);
if (nlen)
{
printf("server say:%s\n", recvbuf);
}
}
}
closesocket(_sock);
WSACleanup();
getchar();
return 0;
}
上边是实现最简单的收发消息