1、 《网络编程技术》实验报告 得分: 班级 姓名 学号 实验名称 实验二 TCP套接字编程 实验室号 实验目的 掌握单用户客户端跟服务器的连接和数据交互及处理。 实验要求 1. 认真阅读和掌握本实验的相关知识点。 2.上机编写并运行本程序。 3.保存程序的运行结果,并结合程序进行分析。 实验内容 实现一个基于TCP协议的服务器-客户端程序,要求完成以下功能。 客户端: 从命令行读入服务器的IP地址;并连接到服务器; 循环从命令行读入一行字符串,并传递给服务器,由服务器对字符串反转,并将结果返回客户程序,如果用户输入的是q
2、uit,则关闭连接;
客户程序显示反转后的字符串;
服务器端:
循环接收客户的连接请求,并显示客户的IP地址和端口号;
接收客户传来的字符串,反转后传递给客户;
实验步骤或源代码
服务器端:
#include
3、include
4、f((sockfd = socket(AF_INET, SOCK_STREAM, 0))==-1) { perror("socket() error\n"); exit(1); } setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt)); bzero(&server, sizeof(server)); server.sin_family = AF_INET; server.sin_addr.s_addr = htonl(INADDR_ANY); server.sin
5、port = htons(PORT); if(bind(sockfd, (struct sockaddr *)&server, sizeof(server))==-1) { perror("bind() error\n""); exit(1); } if(listen(sockfd,20)==-1) { perror("listen() error\n""); exit(1); } while (1) { len = sizeof(client); if((connfd = accept(
6、sockfd, (struct sockaddr *)&client, & len))==-1) { perror("accept() error\n""); exit(1); } printf("client IP is %s ,PORT is %d\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port)); while (1) { If((num=recv(connfd, buf, MAXDATASIZE,0))==-1); { Perror(“recv() error
7、\n”);
Exit(1);
}
printf("recive buf is %s",buf);
for(j=0;j 8、>
#include 9、XDATASIZE];
int sockfd, num;
struct hostent *he;
if (argc != 2)
{
printf(“you must input like this:%s 10、socket(AF_INET, SOCK_STREAM, 0))==-1)
{
Perror(“socket() error!\n”);
exit(1);
}
bzero(&server, sizeof(server));
server.sin_family = AF_INET;
server.sin_addr = *((struct in_addr *)he->h_addr);
server.sin_port = htons(PORT);
if(connect(sockfd, (struct 11、sockaddr *)&server, sizeof(server))==-1)
{
Perror(“connect() error!\n”);
exit(1);
}
while (fgets(buf, MAXDATASIZE, stdin) != NULL)
{
send(sockfd, buf, strlen(buf),0);
if((num=recv(sockfd, buf, MAXDATASIZE,0))==-1)
{
Perror(“recv() error!\n”);
12、 break;
}
else
printf("recv buf is :%s\n" ,buf);
}
close(sockfd);
}
实验结论、心得体会
1.在写客户端时,将清零函数bzero()置于给服务器赋值之前,导致连接出错。
经过仔细检查发现问题所在。
2.写服务器端时,将客户端地址长度len本为 socklen_t定义为Int型,出错。
心得:
虽然书上都有代码,但是还需要自己做适当的调整,变为自己的东西,而且实验时应该细心,否则一点易被忽视的小错误都可能导致整个实验的失败。
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818