1、 一、实验目的与实验要求 1、实验目的 使用c++6.0或c#,基于SOCKET开发一个简单的C/S文本传输程序 2、实验要求 客户端能够发送由标准输入得到的文本,服务器能够接收并将其显示在标准输出上。 二、实验设备(环境)及要求 计算机系统:windows 8.1 软件环境:vc++6.0 三、实验内容与步骤 1、实验1 (1)实验内容 1、服务器端先初始化socket,并绑定端口,对端口进行监听,等待客户端的连接。 2、客户端初始化socket,连接服务器,并发送数据给服务器。 3、服务器接受客户端的数据,并返回回复信息。 (2)主要步骤 工作原理:
2、
代码:
服务器
#include
3、TCP); if (slisten == INVALID_SOCKET) { printf("socket error !"); return 0; } //绑定IP和端口 sockaddr_in sin; sin.sin_family = AF_INET; sin.sin_port = htons(55555); sin.sin_addr.S_un.S_addr = INADDR_ANY; if (bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR) { print
4、f("bind error !"); return 0; } //开始监听 if (listen(slisten, 5) == SOCKET_ERROR) { printf("listen error !"); return 0; } SOCKET Client; sockaddr_in remoteAddr; int nAddrlen = sizeof(remoteAddr); char revData[255]; printf(" 等待连接...\n"); Client = accept(slist
5、en, (SOCKADDR *)&remoteAddr, &nAddrlen); if (Client == INVALID_SOCKET) { printf("accept error !"); return 0; } printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr)); //接收数据 while (1) { int ret = recv(Client, revData, 255, 0); if (ret > 0) { revDat
6、a[ret] = 0x00;
printf("来自客户端的信息:");
printf(revData);
printf("\n");
}
//发送确认信息
char * sendData = "发送成功。\n\n";
send(Client, sendData, strlen(sendData), 0);
}
closesocket(slisten);
WSACleanup();
return 0;
}
客户端
#include 7、h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
WORD sockVersion = MAKEWORD(2, 2);
WSADATA data;
if (WSAStartup(sockVersion, &data) != 0)
{
return 0;
}
SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sclient == INVALID_S 8、OCKET)
{
printf("invalid socket !\n");
return 0;
}
sockaddr_in serAddr;
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(55555);
serAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if (connect(sclient, (sockaddr *)& 9、serAddr, sizeof(serAddr)) == SOCKET_ERROR)
{
printf("connect error !\n");
closesocket(sclient);
return 0;
}
//发送和接收
printf("连接成功\n");
while(1)
{
char *sendData, *q;
sendData = (char*)malloc(sizeof(char) * 20); q = sen 10、dData;
printf("请输入需要传输的信息:");
scanf("%s", sendData, 20);
send(sclient, sendData, strlen(sendData), 0);
char recData[500];
int ret = recv(sclient, recData, 500, 0);
if (ret > 0)
{
recData[ret] = 0x00;
printf(recData);
}
}
closesocket(scli 11、ent);
WSACleanup();
return 0;
}
四:实验结果与分析
打开服务器,等待连接:
客服端连接后:
接收到客户端信息后等待再次接收信息
客户端成功链接至服务器,等待键入发送信息
客户端发送信息后收到的返回确认,等待再次输入信息
五:结论(讨论)
1、实验结论
本实验使用c++6.0,基于SOCKET开发一个简单的C/S文本传输程序。
2、讨论
该程序还可以加入更多的功能,比如1.服务器可以同时连接几个客户端;2.服务器也可以选择发送数据。
六、教师评审
教师评语
实验成绩
(虽然实验主要侧重于验证问题,但是建议各位老师从解决“工程技术问题”,特别是“复杂工程问题”的角度去评审学生实验过程及实验报告,主要内容包括提出问题、分析问题、解决问题及验证问题。要有较详细的评审意见。)
签名:
日期:
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818