云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 计算机网络实验指导书

计算机网络实验指导书

  • 62 次阅读
  • 3 次下载
  • 2025/7/12 11:52:27

nPort = atoi(argv[1]);//将端口号由“字符串”格式转换成“短整数”格式 //

//初始化通信接口winsocket

nRet = WSAStartup(wVersionRequested, &wsaData); if (wsaData.wVersion != wVersionRequested) { fprintf(stderr,\ return; } //

// Do the stuff a stream server does //

StreamServer(nPort); //

// Release WinSock

///去初始化通信接口winsocket

WSACleanup(); }

////////////////////////////////////////////////////////////

void StreamServer(short nPort) { // // Create a TCP/IP stream socket to \ SOCKET listenSocket;//定义侦听套接字 listenSocket = socket(AF_INET, // Address family SOCK_STREAM, // Socket type IPPROTO_TCP); // Protocol if (listenSocket == INVALID_SOCKET) { PRINTERROR(\ return; } // // Fill in the address structure SOCKADDR_IN saServer; //初始化本地套接字地址 saServer.sin_family = AF_INET; saServer.sin_addr.s_addr = INADDR_ANY; // Let WinSock supply address saServer.sin_port = htons(nPort); // Use port from command line //

41

// bind the name to the socket // int nRet; nRet = bind(listenSocket, // Socket (LPSOCKADDR)&saServer, // Our address sizeof(struct sockaddr)); // Size of address structure if (nRet == SOCKET_ERROR) { PRINTERROR(\ closesocket(listenSocket); return; } // // This isn't normally done or required, but in this // example we're printing out where the server is waiting // so that you can connect the example client. // int nLen; nLen = sizeof(SOCKADDR); char szBuf[256]; nRet = gethostname(szBuf, sizeof(szBuf)); //获取本地主机名 if (nRet == SOCKET_ERROR) { PRINTERROR(\ closesocket(listenSocket); return; } // Show the server name and port number printf(\ szBuf, nPort); // Set the socket to listen printf(\

//在套接字listenSocket上进行侦听(来自客户端的连接请求) nRet = listen(listenSocket, // Bound socket SOMAXCONN); // Number of connection request queue if (nRet == SOCKET_ERROR) { PRINTERROR(\ closesocket(listenSocket);

42

}

return;

//

// Wait for an incoming request //

SOCKET remoteSocket;

printf(\

remoteSocket = accept(listenSocket, // Listening socket NULL, // Optional client address NULL); //创建一个新的套接字,实现与客户端的tcp连接 if (remoteSocket == INVALID_SOCKET) { PRINTERROR(\ closesocket(listenSocket); return; }

//

// We're connected to a client

// New socket descriptor returned already // has clients address

//

// Receive data from the client //

memset(szBuf, 0, sizeof(szBuf)); //将接收缓冲区“清零” nRet = recv(remoteSocket, // Connected client szBuf, // Receive buffer sizeof(szBuf), // Lenght of buffer 0); // Flags if (nRet == INVALID_SOCKET) { PRINTERROR(\ closesocket(listenSocket); closesocket(remoteSocket); return; }

//

// Display received data //

printf(\

43

}

//

// Send data back to the client //

strcpy(szBuf, \nRet = send(remoteSocket, szBuf, strlen(szBuf)+1, 0);

// Connected socket // Data buffer // Lenght of data // Flags

//

// Close BOTH sockets before exiting //

closesocket(remoteSocket);//关闭套接字 closesocket(listenSocket); //关闭套接字 return;

(二)客户端程序:client.cpp

// Compile and link with wsock32.lib

// Pass the server name and port number on the command line. // Example: Client MyMachineName 2000 //

#include #include

#pragma comment(lib,\

// Function prototype

void StreamClient(char *szServer, short nPort);

// Helper macro for displaying errors #define PRINTERROR(s) \\ fprintf(stderr,\

////////////////////////////////////////////////////////////

void main(int argc, char **argv) {

WORD wVersionRequested = MAKEWORD(1,1); WSADATA wsaData; int nRet; short nPort;

44

搜索更多关于: 计算机网络实验指导书 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

nPort = atoi(argv[1]);//将端口号由“字符串”格式转换成“短整数”格式 // //初始化通信接口winsocket nRet = WSAStartup(wVersionRequested, &wsaData); if (wsaData.wVersion != wVersionRequested) { fprintf(stderr,\ return; } // // Do the stuff a stream server does // StreamServer(nPort); // // Release WinSock ///去初始化通信接口winsocket WSACleanup(); } //

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com