Linux系统编程实验七网络编程

上传人:工**** 文档编号:505256213 上传时间:2023-06-14 格式:DOC 页数:11 大小:238KB
返回 下载 相关 举报
Linux系统编程实验七网络编程_第1页
第1页 / 共11页
Linux系统编程实验七网络编程_第2页
第2页 / 共11页
Linux系统编程实验七网络编程_第3页
第3页 / 共11页
Linux系统编程实验七网络编程_第4页
第4页 / 共11页
Linux系统编程实验七网络编程_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《Linux系统编程实验七网络编程》由会员分享,可在线阅读,更多相关《Linux系统编程实验七网络编程(11页珍藏版)》请在金锄头文库上搜索。

1、实验七:网络编程l 实验目的:学会Linux的socket套接字网络编程,熟悉使用TCP传输协议的网络编程流程l 实验要求:编写使用TCP协议的服务器程序和客户端程序,客户端向服务器发送字符串,服务器打印收到的字符串l 实验器材:软件:安装了Linux的vmware虚拟机硬件:PC机一台l 实验步骤:1、编写服务器端代码tcp_server.c#include #include #include #include #include #include #include #include #define portnumber 3333int main(int argc, char *argv) i

2、nt sockfd,new_fd; struct sockaddr_in server_addr; struct sockaddr_in client_addr; int sin_size; int nbytes;char buffer1024;/*1、服务器创建sockfd描述符 */ if(sockfd=socket(AF_INET,SOCK_STREAM,0)=-1)/ AF_INET:IPV4;SOCK_STREAM:TCP fprintf(stderr,Socket error:%sna,strerror(errno); exit(1); /* 2、服务器端填充 sockaddr结构

3、 */ bzero(&server_addr,sizeof(struct sockaddr_in); / 初始化,置0server_addr.sin_family=AF_INET; / Internetserver_addr.sin_addr.s_addr=htonl(INADDR_ANY); / (将本机器上的long数据转化为网络上的long数据)服务器程序能运行在任何ip的主机上/server_addr.sin_addr.s_addr=inet_addr(192.168.1.1); /用于绑定到一个固定IP,inet_addr用于把数字加格式的ip转化为整形ipserver_addr.s

4、in_port=htons(portnumber); / (将本机器上的short数据转化为网络上的short数据)端口号/* 3、绑定地址结构体 */ if( bind(sockfd, &server_addr,sizeof(server_addr)0)printf(“bind error!”);exit(-1);/* 4、设置监听允许连接的最大客户端数 */ if( listen( sockfd, 0)0)printf(“listen error!”);exit(-1);while(1) /* 5、服务器阻塞,直到客户程序建立连接 */ sin_size=sizeof(struct soc

5、kaddr_in); if(new_fd=accept(sockfd,& server_addr,&sin_size)0)printf(“accept error!”);exit(-1); /连接成功后打印客户端IPfprintf(stderr,Server get connection from %sn,inet_ntoa(client_addr.sin_addr); / 将网络地址转换成.字符串 /6、read()函数读取客户端发送的消息nbytes=read(new_fd,buffer,1024);buffernbytes=0;printf(Server received %sn,buf

6、fer);/* 这个通讯已经结束 */ close(new_fd); /* 循环下一个 */ /* 结束通讯 */ close(sockfd); exit(0); /*完整程序*#include #include #include #include #include #include #include #include #include/inet_ntoa()#include /read(),close()#define portnumber 3333int main(int argc, char *argv) int sockfd,new_fd; struct sockaddr_in ser

7、ver_addr; struct sockaddr_in client_addr; int sin_size; int nbytes;char buffer1024;/*1、服务器创建sockfd描述符 */ if(sockfd=socket(AF_INET,SOCK_STREAM,0)=-1) fprintf(stderr,Socket error:%sna,strerror(errno); exit(1); /* 2、服务器端填充 sockaddr结构 */ bzero(&server_addr,sizeof(struct sockaddr_in); server_addr.sin_fam

8、ily=AF_INET; server_addr.sin_addr.s_addr=htonl(INADDR_ANY);server_addr.sin_port=htons(portnumber); /* 3、绑定地址结构体 */ if( bind(sockfd, (struct sockaddr *)(&server_addr),sizeof(struct sockaddr)0)printf(bind error!);exit(-1);/* 4、设置监听允许连接的最大客户端数 */ if( listen( sockfd,5)0)printf(listen error!);exit(-1);wh

9、ile(1) /* 5、服务器阻塞,直到客户程序建立连接 */ sin_size=sizeof(struct sockaddr_in); if(new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size)0)printf(accept error!);exit(-1); /连接成功后打印客户端IP if(fork=0) /fork(),创建子进程,多个进程不需等候fprintf(stderr,server get connection from %sn,inet_ntoa(client_addr.sin_addr); /6、

10、read()函数读取客户端发送的消息nbytes=read(new_fd,buffer,1024);buffernbytes=0;printf(Server received %sn,buffer);/* 这个通讯已经结束 */ close(new_fd); else close(new_fd); /结束父进程/* 循环下一个 */ /* 结束通讯 */ return 0; */2、编写客户端代码tcp_client.c#include #include #include #include #include #include #include #include #define portnumb

11、er 3333int main(int argc, char *argv) int sockfd; char buffer1024; struct sockaddr_in server_addr; struct hostent *host; /* 1、客户程序开始建立 sockfd描述符 */ if(sockfd=socket(AF_INET,SOCK_STREAM,0)=-1) /AF_INET:Internet;SOCK_STREAM:TCP fprintf(stderr,Socket Error:%san,strerror(errno); exit(1); /* 2、客户程序填充服务端的

12、资料 */ bzero(&server_addr,sizeof(server_addr); / 初始化,置0server_addr.sin_family=AF_INET; / IPV4server_addr.sin_port=htons(portnumber); / (将本机器上的short数据转化为网络上的short数据)端口号server_addr.sin_addr.s_addr=htonl(INADDR_ANY);/* 3、connect函数,客户程序发起连接请求 */ if( connect( sockfd, &server_addr, sizeof(server_addr)0)printf(“connet error!”);exit(-1);z/* 连接成功了 */ printf(Please input char:n);/* 等待终端输入数据 */fgets(buffer,1024,stdin); /4、write函数发送buffer数据write( sockfd,buffer,strlen(buffer);/* 结束通讯 */ close(sockfd); exit(0); /*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 自考

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