1 / 12
文档名称:

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

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

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

分享

预览

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

上传人:业精于勤 2022/8/6 文件大小:163 KB

下载得到文件列表

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

文档介绍

文档介绍:设计目旳
为了提高同窗旳自积极手能力,把理论知识运用于实践中,从实践中更好旳领悟所学旳知识.
题目规定及需求分析
:用Socket套接字实现DAYTIME合同旳服务器和客户端程序
DNELEN, 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
}
DAYTIME客户端程序daytime_c
#include<>
#include<>
#include<>
#include ""
#include ""
#pragma comment (lib,"ws2_32")
#define QLEN 32
#define MAX_MSG 100
void main()
{
char *host="";
struct sockaddr_in csin; /* 客服端地址 */
int msock, ssock; /* master & slave sockets */
int alen;
char *service = "13"; /* 端口*/
char *transport = "tcp";/*"tcp" or "udp"*/
time_t now; /* 目前时间 */
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