收藏 分销(赏)

基于SOCKET开发文本服务器客户端文本传输程序.docx

上传人:仙人****88 文档编号:9496868 上传时间:2025-03-28 格式:DOCX 页数:8 大小:117.75KB
下载 相关 举报
基于SOCKET开发文本服务器客户端文本传输程序.docx_第1页
第1页 / 共8页
基于SOCKET开发文本服务器客户端文本传输程序.docx_第2页
第2页 / 共8页
点击查看更多>>
资源描述
一、实验目的与实验要求 1、实验目的 使用c++6.0或c#,基于SOCKET开发一个简单的C/S文本传输程序 2、实验要求 客户端能够发送由标准输入得到的文本,服务器能够接收并将其显示在标准输出上。 二、实验设备(环境)及要求 计算机系统:windows 8.1 软件环境:vc++6.0 三、实验内容与步骤 1、实验1 (1)实验内容 1、服务器端先初始化socket,并绑定端口,对端口进行监听,等待客户端的连接。 2、客户端初始化socket,连接服务器,并发送数据给服务器。 3、服务器接受客户端的数据,并返回回复信息。 (2)主要步骤 工作原理: 代码: 服务器 #include <stdio.h> #include <winsock.h> #pragma comment(lib,"ws2_32.lib") int main() { //初始化 WORD sockVersion = MAKEWORD(2, 2); WSADATA wsaData; if (WSAStartup(sockVersion, &wsaData) != 0) { return 0; } //创建套接字 SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_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) { printf("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(slisten, (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) { revData[ret] = 0x00; printf("来自客户端的信息:"); printf(revData); printf("\n"); } //发送确认信息 char * sendData = "发送成功。\n\n"; send(Client, sendData, strlen(sendData), 0); } closesocket(slisten); WSACleanup(); return 0; } 客户端 #include <stdio.h> #include <winsock2.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_SOCKET) { 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 *)&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 = sendData; 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(sclient); WSACleanup(); return 0; }   四:实验结果与分析 打开服务器,等待连接: 客服端连接后:   接收到客户端信息后等待再次接收信息 客户端成功链接至服务器,等待键入发送信息 客户端发送信息后收到的返回确认,等待再次输入信息 五:结论(讨论) 1、实验结论 本实验使用c++6.0,基于SOCKET开发一个简单的C/S文本传输程序。 2、讨论  该程序还可以加入更多的功能,比如1.服务器可以同时连接几个客户端;2.服务器也可以选择发送数据。 六、教师评审     教师评语 实验成绩   (虽然实验主要侧重于验证问题,但是建议各位老师从解决“工程技术问题”,特别是“复杂工程问题”的角度去评审学生实验过程及实验报告,主要内容包括提出问题、分析问题、解决问题及验证问题。要有较详细的评审意见。)                                               签名:                               日期:      
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服