tcp套接字编程.doc_第1页
tcp套接字编程.doc_第2页
tcp套接字编程.doc_第3页
tcp套接字编程.doc_第4页
tcp套接字编程.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论