Socket 编程利用 TCP 协议的实验报告 Socket 编程报告(TCP/IP 协议) 一.实验目的通过 C++来实现 TCP/IP 协议下的 Socket 编程,掌握 TCP 协议的算法实现。二.实验原理客户端 建立 Socket,通过端口号和地址确定目标服务器,使用 Connect 连接到服务器,send 发送消息,等待处理,通信完成后调用 CloseSocket 关闭 Socket 服务端 建立 Socket,声明自身的端口号和地址并绑定到 Socket,使用 Listen 打开监听,然后不断用 Accept 去查看是否有连接,假如有,捕获 Socket,并通过 Recv 猎取消息的内容,通信完成后调用 CloseSocket 关闭这个对应 Accept 到的Socket,假如不再需要等待任何客户端连接,那么用 CloseSocket 关闭掉自身的 Socket三.实验代码(C++实现)服务器端代码如下:#pragma once#include #include #pragma comment (lib,"ws2_32.lib")class CServerNet{public: //初始化服务器,返回 0 表示成功int Init(const char* address,int port); //更新数据void Run();private:SOCKET m_sock;};int CServerNet::Init( const char* address,int port ){int rlt = 0; //用于记录错误信息,并输出int iErrorMsg; //初始化 WinSockWSAData wsaData;iErrorMsg = WSAStartup(MAKEWORD(1,1),&wsaData);if (iErrorMsg != NO_ERROR){//初始化 WinSock 失败printf("wsastartup failed with error : %d\n",iErrorMsg); rlt = 1;return rlt;}//创建服务端 Socketm_sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if (m_sock == INVALID_SOCKET) {//创建 Socket 异常printf("socket failed with error : %d\n",WSAGetLastError()); rlt = 2;return rlt;}//声明信息sockaddr_in serverAddr;serverAddr.sin_family = AF_INET;serverAddr.sin_port = port;serverAddr.sin_addr.s_addr = inet_addr(address);//绑定iErrorMsg = bind(m_sock,(sockaddr*)&serverAddr,sizeof(serverAddr));if (iErrorMsg < 0){//绑定失败printf("bind failed with error : %d\n",iErrorMsg);rlt = 3;return rlt;} return rlt;}void CServerNet::Run(){//公开连接listen(m_sock,5);sockaddr_in tcpAddr;int len = sizeof(sockaddr);SOCKET newSocket;char buf[1024];int rval;do{//接收信息newSocket = ac...