18,356
社区成员
发帖
与我相关
我的任务
分享
服务器端代码
#include<stdio.h>
#include<WinSock2.h>
#pragma comment (lib,"WS2_32.lib")
#define PORT 8888
#define ADDR "127.0.0.1"
int main()
{
char buf[100];
int iResult = 0;
SOCKET sconnection = INVALID_SOCKET;
struct sockaddr_in serAddr;
//套接字初始化
WSADATA mydata;
if (WSAStartup(MAKEWORD(2, 2), &mydata) != 0)
{
printf("套接字初始化失败:%d\n", WSAGetLastError());
exit(0);
}
printf("初始化成功.......\n");
//创建套接字
if ((sconnection = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
printf("创建套接字失败:%d\n", WSAGetLastError());
WSACleanup();
return 0;
}
printf("TCP套接字创建成功......\n");
//设置服务器地址结构
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(PORT);
serAddr.sin_addr.S_un.S_addr = inet_addr(ADDR);
//连接到服务器
printf("正在连接到%s:%d\n", inet_ntoa(serAddr.sin_addr), htons(serAddr.sin_port));
if (connect(sconnection, (struct sockaddr*) & serAddr, sizeof(serAddr)) == SOCKET_ERROR)
{
printf("连接失败:%d\n", WSAGetLastError());
closesocket(sconnection);
WSACleanup();
return 0;
}
printf("连接成功.......\n");
printf("准备发送数据....\n");
//发送缓冲区中的数据
while(1)
(
memset(buf, 0, sizeof(buf));//初始化缓冲区
printf("想要发送的数据为:\n");
gets(buf);
if (iResult = send(sconnection, buf, sizeof(buf), 0) == SOCKET_ERROR)
{
printf("发送数据失败:%d\n", WSAGetLastError());
closesocket(sconnection);
WSACleanup();
return 0;
}
printf("数据发送成功到%s\n", inet_ntoa(serAddr.sin_addr));
memset(buf, 0, sizeof(buf));//初始化缓冲区
//接收服务器返回的数据
if (iResult = recv(sconnection, buf, strlen(buf), 0) == SOCKET_ERROR)
{
printf("接收数据失败:%d\n", WSAGetLastError());
}
printf("来自%s的数据已被成功接收\n", inet_ntoa(serAddr.sin_addr));
printf(buf);
);
printf("准备关闭连接.....\n");
closesocket(sconnection);
WSACleanup();
return 0;
}
客户端代码:
#include<stdio.h>
#include<WinSock2.h>
#pragma comment (lib,"WS2_32.lib")
#define PORT 8888
#define ADDR "127.0.0.1"
int main()
{
char buf[100];
int iResult = 0;
SOCKET sconnection = INVALID_SOCKET;
struct sockaddr_in serAddr;
//套接字初始化
WSADATA mydata;
if (WSAStartup(MAKEWORD(2, 2), &mydata) != 0)
{
printf("套接字初始化失败:%d\n", WSAGetLastError());
exit(0);
}
printf("初始化成功.......\n");
//创建套接字
if ((sconnection = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
printf("创建套接字失败:%d\n", WSAGetLastError());
WSACleanup();
return 0;
}
printf("TCP套接字创建成功......\n");
//设置服务器地址结构
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(PORT);
serAddr.sin_addr.S_un.S_addr = inet_addr(ADDR);
//连接到服务器
printf("正在连接到%s:%d\n", inet_ntoa(serAddr.sin_addr), htons(serAddr.sin_port));
if (connect(sconnection, (SOCKADDR *) & serAddr, sizeof(serAddr)) == SOCKET_ERROR)
{
printf("连接失败:%d\n", WSAGetLastError());
closesocket(sconnection);
WSACleanup();
return 0;
}
printf("连接成功.......\n");
printf("准备发送数据....\n");
//发送缓冲区中的数据
for (int i = 0;; i++)
{
memset(buf, 0, sizeof(buf));//初始化缓冲区
printf("想要发送的数据为:\n");
gets(buf);
if (iResult = send(sconnection, buf, sizeof(buf), 0) == SOCKET_ERROR)
{
printf("发送数据失败:%d\n", WSAGetLastError());
closesocket(sconnection);
WSACleanup();
return 0;
}
printf("数据发送成功到%s\n", inet_ntoa(serAddr.sin_addr));
//memset(buf, 0, sizeof(buf));//初始化缓冲区
//接收服务器返回的数据
if (iResult = recv(sconnection, buf, strlen(buf), 0) == SOCKET_ERROR)
{
printf("接收数据失败:%d\n", WSAGetLastError());
}
printf("来自%s的数据已被成功接收\n", inet_ntoa(serAddr.sin_addr));
printf(buf);
}
printf("准备关闭连接.....\n");
closesocket(sconnection);
WSACleanup();
return 0;
}