1 / 12
文档名称:

用Socket套接字实现DAYTIME协议的服务器和客户端程序.doc

格式:doc   大小:232KB   页数:12页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

用Socket套接字实现DAYTIME协议的服务器和客户端程序.doc

上传人:63229029 2017/2/4 文件大小:232 KB

下载得到文件列表

用Socket套接字实现DAYTIME协议的服务器和客户端程序.doc

相关文档

文档介绍

文档介绍:一、设计目的为了提高同学的自主动手能力, 把理论知识运用于实践中,从实践中更好的领悟所学的知识. 二、题目要求及需求分析 1. 网络 I/O 程序设计:用 Socket 套接字实现 DAYTIME 协议的服务器和客户端程序 1. DAYTIME 服务器程序 daytime_s 服务器程序创建一个 TCP 或 UDP 套接字,监听端口号 13号端口。在收到客户端程序的连接后, 将服务器的本地时间以 ASCII 码形式发送到客户端。然后继续等待下一个客户端的连接。 2. DAYTIME 客户端程序 daytime_c 客户端程序创建一个 TCP 或 UDP 套接字,连接服务器的 13 号端口。在接收到服务器发送的日期时间信息后,将其打印到屏幕上,退出。客户端运行时需要指定服务器的 IP 地址。所以客户端程序需要首先读取命令行中的 IP 地址参数。 2. 客户机/ 服务器模式三、概要设计 定义类型定义了五个字符型变量、三个整型和一个结构体变量。 用到的主要函数 Socket 提供的系统调用或函数 socket() bind() listen() recv() close() socket() connect() recv() send() close() blocks until server receives a connect request from client data data Server Client accept() send() connect negotiation 主函数 void main() { 定义变量 while (1) { if( 设置“ TCP 或者 UDP ”){ if (ssock < 0) {}} else { if(n<0) { }} if (strcmp(transport, "tcp") == 0) {} else{ }} closesocket(msock); #if defined WIN32 WSACleanup(); #endif } 四、详细设计程序代码如下: 1. DAYTIME 客户端程序 daytime_c #include<> #include <> #include"" #include "" #ment (lib,"ws2_32") #define LINELEN 128 void main() { char *a[100]; char *host=a; struct sockaddr_in sin; /* the from address ofa client */ int s; char *service = "13"; /* 端口号*/ char *transport = "tcp";/*"tcp" or "udp"*/ char buf[LINELEN+1]; /* buffer for one line of text */ int n; /* socket, 读入计数*/ int alen; #if defined WIN32 WSADATA wsadata; WSAStartup(1, &wsadata); #endif printf(" 请输入服务器的 IP 地址: "); scanf("%s\n",a); printf(" 显示当前时间: \n"); s= connectsock(host, service, transport); if(s < 0) return; if (strcmp(transport, "tcp") == 0) { while( (n= recv(s, buf, LINELEN, 0)) > 0) { buf[n] = '\0'; /* ensure null-terminated, 定义 buf[LINELEN+1] 而不是 buf[LINELEN] 是为了避免 buffer overflow*/ fputs(buf, stdout); }} else { sendto(s, "Get Time", 8, 0, (struct sockaddr *) &sin, sizeof(sin)); alen = sizeof(sin); n= recvfrom(s, buf, LINELEN, 0, (struct sockaddr *) &sin, &alen); buf[n] = '\0'; fputs(buf, stdout); } closesocket(s); #if defined WIN32 WSACleanup(); #endif } 2. DAYTIME 客户端程序 daytime_c #include<st