tcp套接字编程.doc

上传人:cl****1 文档编号:555118232 上传时间:2023-08-18 格式:DOC 页数:6 大小:45KB
返回 下载 相关 举报
tcp套接字编程.doc_第1页
第1页 / 共6页
tcp套接字编程.doc_第2页
第2页 / 共6页
tcp套接字编程.doc_第3页
第3页 / 共6页
tcp套接字编程.doc_第4页
第4页 / 共6页
tcp套接字编程.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《tcp套接字编程.doc》由会员分享,可在线阅读,更多相关《tcp套接字编程.doc(6页珍藏版)》请在金锄头文库上搜索。

1、网络编程技术实验报告得分: 班级姓名学号实验名称实验二 TCP套接字编程实验室号实验目的掌握单用户客户端跟服务器的连接和数据交互及处理。实验要求1.认真阅读和掌握本实验的相关知识点。2上机编写并运行本程序。3保存程序的运行结果,并结合程序进行分析。实验内容实现一个基于TCP协议的服务器-客户端程序,要求完成以下功能。客户端:从命令行读入服务器的IP地址;并连接到服务器;循环从命令行读入一行字符串,并传递给服务器,由服务器对字符串反转,并将结果返回客户程序,如果用户输入的是quit,则关闭连接;客户程序显示反转后的字符串;服务器端:循环接收客户的连接请求,并显示客户的IP地址和端口号;接收客户传

2、来的字符串,反转后传递给客户;实验步骤或源代码服务器端:#include#include#include#include#include#include#include#include#include#include#define MAXDATASIZE 100#define PORT 2345int main()int sockfd, connfd; struct sockaddr_in server, server; struct sockaddr_in client; socklen_t len; char bufMAXDATASIZE; char sendbufMAXDATASIZE;

3、 int i, num,j;int opt=SO_REUSEADDR; if(sockfd = socket(AF_INET, SOCK_STREAM, 0)=-1)perror(socket() errorn);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_port = ht

4、ons(PORT); if(bind(sockfd, (struct sockaddr *)&server, sizeof(server)=-1) perror(bind() errorn); exit(1); if(listen(sockfd,20)=-1) perror(listen() errorn); exit(1); while (1) len = sizeof(client); if(connfd = accept(sockfd, (struct sockaddr *)&client, & len)=-1) perror(accept() errorn);exit(1);print

5、f(client IP is %s ,PORT is %dn, inet_ntoa(client.sin_addr), ntohs(client.sin_port); while (1) If(num=recv(connfd, buf, MAXDATASIZE,0)=-1); Perror(“recv() error!n”); Exit(1); printf(recive buf is %s,buf); for(j=0;jn;j+) sendbufn-j-2=bufj; send(connfd, sendbuf, n,0);if (!strcmp(buf,”quit”) break; clos

6、e(connfd) close(sockfd);客户端源代码如下:#include #include #include #include #include #include #include #include #include #include #define MAXDATASIZE 100#define PORT 2345int main(int argc, char *argv) struct sockaddr_in server; char bufMAXDATASIZE; int sockfd, num;struct hostent *he; if (argc != 2) printf(

7、“you must input like this:%s ”,argv0): exit(1); if (he=gethostbyname(argv1) = NULL) Perror(“gethostbyname() error!n”); exit(1); if(sockfd = 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

8、in_addr *)he-h_addr); server.sin_port = htons(PORT); if(connect(sockfd, (struct 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”); break; else printf(recv buf is :%sn ,buf); close(sockfd);实验结论、心得体会1.在写客户端时,将清零函数bzero()置于给服务器赋值之前,导致连接出错。经过仔细检查发现问题所在。2.写服务器端时,将客户端地址长度len本为 socklen_t定义为Int型,出错。心得:虽然书上都有代码,但是还需要自己做适当的调整,变为自己的东西,而且实验时应该细心,否则一点易被忽视的小错误都可能导致整个实验的失败。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号