环境:vs2013
server.c
#include<Winsock2.h>
#include<stdio.h>
#pragma comment(lib,"Ws2_32.lib")
#include<stdlib.h>
void main()
{
WSADATA wsaData;
struct sockaddr_in server, client;
int iLen;
char recMessage[1024];
SOCKET sAccept;
memset(recMessage, 0, sizeof(recMessage));
printf("-------------------------\n");
printf("服务器在等待\n");
printf("-------------------------\n");
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
printf("协议栈加载失败!\n");
return;
}
SOCKET sListen = socket(AF_INET, SOCK_STREAM, 0);
if (sListen == INVALID_SOCKET)
{
printf("sListen套接口创建失败!\n");
return;
}
server.sin_family = AF_INET;
server.sin_port = htons(8888);
server.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(sListen, (LPSOCKADDR)&server, sizeof(server)) == SOCKET_ERROR)
{
printf("绑定失败!\n");
return;
}
if (listen(sListen, 5) == SOCKET_ERROR)
{
printf("监听失败!\n");
return;
}
iLen = sizeof(client);
while (1)
{
sAccept = accept(sListen, (struct socketaddr*)&client, &iLen);
if (sAccept == INVALID_SOCKET)
{
printf("接受失败!");
break;
}
printf("接受的客户端的地址IP是:[%s], port[%d]\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port));
while (1)
{
int recLen = recv(sAccept, recMessage, sizeof(recMessage), 0);
if (recLen == 0)
return;
else if (recLen == SOCKET_ERROR)
{
printf("接收失败!\n");
}
printf("沸沸腾:%s\n", recMessage);
}
}
closesocket(sAccept);
closesocket(sListen);
WSACleanup();
}
client.c
#include<Winsock2.h>
#include<stdio.h>
#pragma comment(lib,"Ws2_32.lib")
#include<stdlib.h>
void main()
{
WSADATA wsaData;
struct sockaddr_in server;
SOCKET sClient;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
printf("协议栈加载失败!\n");
return;
}
server.sin_family = AF_INET;
server.sin_port = htons(8888);
server.sin_addr.s_addr = inet_addr("172.17.152.206");
sClient = socket(AF_INET, SOCK_STREAM, 0);
if (sClient == INVALID_SOCKET)
{
printf("套接口创建失败!\n");
return;
}
if (connect(sClient, (struct sockaddr*)&server, sizeof(server)) == INVALID_SOCKET)
{
printf("连接失败!\n");
return;
}
for (int i = 0; i < 5; i++)
{
printf("田腾飞: ");
char message[1024];
gets_s(message,1024);
int iSend = send(sClient, message, sizeof(message), 0);
if (iSend == SOCKET_ERROR)
{
printf("发送失败!\n");
break;
}
else if (iSend == 0)
break;
else
{
printf("发送成功!\n");
}
}
closesocket(sClient);
WSACleanup();
}