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

上传人:11****ws 文档编号:2231585 上传时间:2019-05-02 格式:DOC 页数:12 大小:232.50KB
下载 相关 举报
用Socket套接字实现DAYTIME协议的服务器和客户端程序.doc_第1页
第1页 / 共12页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.doc_第2页
第2页 / 共12页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.doc_第3页
第3页 / 共12页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.doc_第4页
第4页 / 共12页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、1、设计目的为了提高同学的自主动手能力,把理论知识运用于实践中,从实践中更好的领悟所学的知识.2、题目要求及需求分析1.网络 I/O 程序设计:用 Socket 套接字实现 DAYTIME 协议的服务器和客户端程序1 DAYTIME 服务器程序 daytime_s服务器程序创建一个 TCP 或 UDP 套接字,监听端口号 13 号 端口。在收到客户端程序的连接后,将服务器的本地时间以 ASCII 码形式发送到客户端。然后继续等待下一个客户端的连接。2 DAYTIME 客户端程序 daytime_c客户端程序创建一个 TCP 或 UDP 套接字,连接服务器的 13 号端口。在接收到服务器发送的日

2、期时间信息后,将其打印到屏幕上,退出。客户端运行时需要指定服务器的 IP 地址。所以客户端程序需要首先读取命令行中的 IP 地址参数。 2.客户机/服务器模式3、概要设计1.1 定义类型定义了五个字符型变量、三个整型和一个结构体变量。1.2 用到的主要函数Socket 提供的系统调用或函数socket()bind()listen()recv()close()socket()connect()recv()send()close()blocks until server receivesa connect request from clientdatadataServerClientaccept(

3、)send()connect negotiation2.1 主函数void main()定义变量while (1) if (设置“TCP 或者 UDP”)if (ssock #include #include“connectsock.c“#include “errexit.c“#pragma comment (lib,“ws2_32“)#defineLINELEN 128void main()char *a100;char *host=a;struct sockaddr_in sin; /* the from address of a client*/int s;char *service =

4、 “13“; /* 端口号 */char *transport = “tcp“;/*“tcp“ or “udp“*/char bufLINELEN+1; /* buffer for one line of text */int n; /* socket, 读入计数*/int alen;#if defined WIN32WSADATA wsadata;WSAStartup(1, #endifprintf(“请输入服务器的 IP 地址:“);scanf(“%sn“,a);printf(“显示当前时间: n“);s = connectsock(host, service, transport);if

5、(s 0) bufn = 0; /* ensure null-terminated, 定义bufLINELEN+1而不是 bufLINELEN是为了避免 buffer overflow*/fputs(buf, stdout);elsesendto(s, “Get Time“, 8, 0, (struct sockaddr *) alen = sizeof(sin);n = recvfrom(s, buf, LINELEN, 0, (struct sockaddr *) bufn = 0;fputs(buf, stdout);closesocket(s);#if defined WIN32WSA

6、Cleanup();#endif 2. DAYTIME 客户端程序 daytime_c#include#include #include#include “passivesock.c“#include “errexit.c“#pragma comment (lib,“ws2_32“)#define QLEN 32#define MAX_MSG 100void main()char *host=“127.0.0.1“;struct sockaddr_in csin; /* 客服端地址 */int msock, ssock; /* master char *service = “13“; /* 端

7、口*/char *transport = “tcp“;/*“tcp“ or “udp“*/time_t now; /* 当前时间 */char *pts; /* pointer to time string */char msgMAX_MSG;int n;#if defined WIN32WSADATA wsadata;WSAStartup(2, #endifmsock = passivesock(service, transport, QLEN); printf(“wait for requests for service:%sn“, service);while (1) if (strcm

8、p(transport, “tcp“) = 0)alen = sizeof(csin);ssock = accept(msock, (struct sockaddr *)if (ssock 0)printf(“accept failedn“);break;elsealen = sizeof(csin);n = recvfrom(msock, msg, MAX_MSG, 0, (struct sockaddr *) if(n0) printf(“accept failed“);break; time(pts = ctime(if (strcmp(transport, “tcp“) = 0)send(ssock, pts, strlen(pts), 0);closesocket(ssock);elsealen = sizeof(csin);sendto(msock, pts, strlen(pts), 0, (struct sockaddr *) closesocket(msock);#if defined WIN32WSACleanup();#endif5、调试分析1.1 打开服务器端,等待客服端建立连接服务器程序创建一个 TCP 套接字,监听端口号 13 号端口。2.1 打开客户端准备连接服务器端客户端程序创建一个 TCP 或 UDP 套接字,连接服务器的 13 号

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。