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

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

一、实验目的与实验要求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, si

文档评论(0)

1亿VIP精品文档

相关文档