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

#include#include "passivesock.c"

#include "errexit.c"

#pragma comment (lib,"ws2_32")

#define QLEN32

#define MAX_MSG 100

void main()

{

char *host="127.0.0.1";

structsockaddr_in csin;/* 客服端地址*/

intmsock, ssock;/* master & slave sockets*/

int alen;

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

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

time_tnow;/* 当前时间*/

char*pts;/* pointer to time string*/

char msg[MAX_MSG];

int n;

#if defined WIN32

WSADATA wsadata;

WSAStartup(2, &wsadata);

#endif

msock = passivesock(service, transport, QLEN);

printf("wait for requests for service:%s\n", service);

while (1)

{

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

{

alen = sizeof(csin);

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

if (ssock < 0)

{

printf("accept failed\n");

break;

}}

else

{

alen = sizeof(csin);

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

if(n<0) {

printf("accept failed");

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, (struct sockaddr *) &csin, alen);

}}

closesocket(msock);

#if defined WIN32

WSACleanup();

#endif}

5、 调试分析

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

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

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

客户端程序创建一个TCP或UDP套接字,连接服务器的13号端口。客户端运行时需要指定服务器的IP地址。所以客户端程序需要首先读取命令行中的IP地址参数。

2.2 输入服务器端的

在收到客户端程序的连接后,将服务器的本地时间以ASCII码形式发送到客户端。然后继续等待下一个客户端的连接。

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

6、 设计总结

本次实验在设计前期遇到了很多的问题,首先,是C语言的基础打得不好,所以用socket来编程就有困难。其次,在编程中一个符号写错就要调试很久才找处错误,这一点是对语言不熟悉,在以前练习少。经过这次作业经一步熟悉了C语言编程,熟知了两台计算机之间的通信,也了解了客户机/服务端模式的知识。

7、 参考文献

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

2. 谷歌搜索

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值