文档介绍:网络协议编程
基于WinSock API的TCP网络程序的编写与分析。
(1)掌握常用的WinSock API函数。
(2)掌握基于WinSock API函数和TCP协议的网络通信控制台程序的编写方法。
(1)实验性质:验证性。
(2)实验课时:2学时。
计算机局域网、Visual C++
(1)基于WinSock API函数和TCP协议的daytime网络程序的编写与分析
①在Visual C++,编写daytime网络通信服务器程序。
②在Visual C++,编写daytime网络通信客户端程序。
(2)基于WinSock API函数和TCP协议的网络通信控制台程序的编写与分析
①在Visual C++,编写基于WinSock API函数和TCP协议的网络通信控制台服务器程序。
②在Visual C++,编写基于WinSock API函数和TCP协议的网络通信控制台客户端程序。
(3)对编写好的网络通信程序在局域网两台不同的电脑上调试。
(4)对编写好的网络通信程序在一台电脑上调试运行。
(1)基于WinSock API函数和TCP协议的daytime网络程序的编写与分析
①在Visual C++,编写daytime网络通信服务器程序。
服务器端程序代码如下:
/***************************************************************
daytime协议的服务器程序分析注解服务器端程序代码如下:
服务器的IP地址:由系统指定
服务器端口号:13
)
程序名称:
程序功能:实现由RFC—867定义的daytime协议
命令格式:daytime
***************************************************************/
#include ""
#include ""
#include ""
#ment(lib,"")
#define MAX_BUFFER 1024 /*服务器缓冲区的最大值为1024个字符*/
//#define NULL 0
#define DAYTIME_SERVER_PORT 13 /*常量表示服务器的端口号为13*/
int main()
{
SOCKET serverFd;
int connectionFd,i=1; /*统计客户请求次数*/
struct sockaddr_in servaddr;
char timebuffer[MAX_BUFFER+1];
time_t currentTime;
WSADATA wsaData;
if(WSAStartup(MAKEWORD(2,2),&wsaData)==SOCKET_ERROR)
{
printf("命令套接口初始化失败\n");
WSACleanup();//终止使用Winsock DLL库,释放系统资源
return-1;
}
serverFd=socket(,SOCK_STREAM,0); /*创建服务器端的套接字,三个参数分别代表使用TCP/IP;传输过程使用TCP;不适用其他特殊协议*/
if(serverFd==-1)
{
printf("socket error!\n");
WSACleanup();//终止使用Winsock DLL库,释放系统资源
return(-1);
}
memset(&servaddr,0,sizeof(servaddr));
=;
=htonl(INADDR_ANY); /*将4字节主机字节数顺序转换到网络字节顺序*/
)
=htons(DAYTIME_SERVER_PORT);/*将4字节主机字节数顺序转换到网络字节顺序*/
if(bind(serverFd,(struct sockaddr *)&servaddr, sizeof(servaddr))==SOCKET_ERROR)/*地址绑定*/
{
printf("bind( ) Failed: