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

上传人:b****3 文档编号:10819516 上传时间:2023-05-27 格式:DOCX 页数:10 大小:154.08KB
下载 相关 举报
用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx_第1页
第1页 / 共10页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx_第2页
第2页 / 共10页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx_第3页
第3页 / 共10页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx_第4页
第4页 / 共10页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx_第5页
第5页 / 共10页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx_第6页
第6页 / 共10页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx_第7页
第7页 / 共10页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx_第8页
第8页 / 共10页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx_第9页
第9页 / 共10页
用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx》由会员分享,可在线阅读,更多相关《用Socket套接字实现DAYTIME协议的服务器和客户端程序.docx(10页珍藏版)》请在冰点文库上搜索。

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

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

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

1、设计目的

为了提高同学的自主动手能力,把理论知识运用于实践中,从实践中更好的领悟所学的知识.

2、题目要求及需求分析

1.网络I/O程序设计:

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

1.DAYTIME服务器程序daytime_s

服务器程序创建一个TCP或UDP套接字,监听端口号13号端口。

在收到客户端程序的连接后,将服务器的本地时间以ASCII码形式发送到客户端。

然后继续等待下一个客户端的连接。

2.DAYTIME客户端程序daytime_c

客户端程序创建一个TCP或UDP套接字,连接服务器的13号端口。

在接收到服务器发送的日期时间信息后,将其打印到屏幕上,退出。

客户端运行时需要指定服务器的IP地址。

所以客户端程序需要首先读取命令行中的IP地址参数。

2.客户机/服务器模式

 

socket()

bind()

listen()

recv()

close()

socket()

connect()

recv()

send()

close()

blocksuntilserverreceives

aconnectrequestfromclient

data

data

Server

Client

accept()

send()

connectnegotiation

 

3、概要设计

1.1定义类型

定义了五个字符型变量、三个整型和一个结构体变量。

1.2用到的主要函数

Socket提供的系统调用或函数

2.1主函数

voidmain()

{

定义变量

while

(1)

{

if(设置“TCP或者UDP”)

{

if(ssock<0)

{}}

else

{

if(n<0){}}

if(strcmp(transport,"tcp")==0)

{}

else{}}

closesocket(msock);

#ifdefinedWIN32

WSACleanup();

#endif

}

4、详细设计

程序代码如下:

1.DAYTIME客户端程序daytime_c

#include

#include

#include"connectsock.c"

#include"errexit.c"

#pragmacomment(lib,"ws2_32")

#defineLINELEN128

voidmain()

{

char*a[100];

char*host=a;

structsockaddr_insin;/*thefromaddressofaclient*/

ints;

char*service="13";/*端口号*/

char*transport="tcp";/*"tcp"or"udp"*/

charbuf[LINELEN+1];/*bufferforonelineoftext*/

intn;/*socket,读入计数*/

intalen;

#ifdefinedWIN32

WSADATAwsadata;

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';/*ensurenull-terminated,定义buf[LINELEN+1]而不是buf[LINELEN]是为了避免bufferoverflow*/

fputs(buf,stdout);

}

}

else

{

sendto(s,"GetTime",8,0,(structsockaddr*)&sin,sizeof(sin));

alen=sizeof(sin);

n=recvfrom(s,buf,LINELEN,0,(structsockaddr*)&sin,&alen);

buf[n]='\0';

fputs(buf,stdout);

}

closesocket(s);

#ifdefinedWIN32

WSACleanup();

#endif

}

2.DAYTIME客户端程序daytime_c

#include

#include

#include

#include"passivesock.c"

#include"errexit.c"

#pragmacomment(lib,"ws2_32")

#defineQLEN32

#defineMAX_MSG100

voidmain()

{

char*host="127.0.0.1";

structsockaddr_incsin;/*客服端地址*/

intmsock,ssock;/*master&slavesockets*/

intalen;

char*service="13";/*端口*/

char*transport="tcp";/*"tcp"or"udp"*/

time_tnow;/*当前时间*/

char*pts;/*pointertotimestring*/

charmsg[MAX_MSG];

intn;

#ifdefinedWIN32

WSADATAwsadata;

WSAStartup(2,&wsadata);

#endif

msock=passivesock(service,transport,QLEN);

printf("waitforrequestsforservice:

%s\n",service);

while

(1)

{

if(strcmp(transport,"tcp")==0)

{

alen=sizeof(csin);

ssock=accept(msock,(structsockaddr*)&csin,&alen);

if(ssock<0)

{

printf("acceptfailed\n");

break;

}}

else

{

alen=sizeof(csin);

n=recvfrom(msock,msg,MAX_MSG,0,(structsockaddr*)&csin,&alen);

if(n<0){

printf("acceptfailed");

break;

}}

time(&now);

pts=ctime(&now);

if(strcmp(transport,"tcp")==0)

{

send(ssock,pts,strlen(pts),0);

closesocket(ssock);

}

else

{

alen=sizeof(csin);

sendto(msock,pts,strlen(pts),0,(structsockaddr*)&csin,alen);

}}

closesocket(msock);

#ifdefinedWIN32

WSACleanup();

#endif}

5、调试分析

1.1打开服务器端,等待客服端建立连接

服务器程序创建一个TCP套接字,监听端口号13号端口。

2.1打开客户端准备连接服务器端

客户端程序创建一个TCP或UDP套接字,连接服务器的13号端口。

客户端运行时需要指定服务器的IP地址。

所以客户端程序需要首先读取命令行中的IP地址参数。

2.2输入服务器端的

在收到客户端程序的连接后,将服务器的本地时间以ASCII码形式发送到客户端。

然后继续等待下一个客户端的连接。

在接收到服务器发送的日期时间信息后,将其打印到屏幕上,退出。

6、设计总结

本次实验在设计前期遇到了很多的问题,首先,是C语言的基础打得不好,所以用socket来编程就有困难。

其次,在编程中一个符号写错就要调试很久才找处错误,这一点是对语言不熟悉,在以前练习少。

经过这次作业经一步熟悉了C语言编程,熟知了两台计算机之间的通信,也了解了客户机/服务端模式的知识。

7、参考文献

1.《数据通信与网络》(美)BehrouzAForouzan著机械工业出版社,2005

2.谷歌搜索

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2