欢迎来到天天文库
浏览记录
ID:25446760
大小:213.00 KB
页数:13页
时间:2018-11-20
《实验9--网络编程-tcp》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验3-1网络编程-TCPl实验目的:1、理解网络编程的原理2、掌握TCPsocket的使用流程3、掌握select多路复用技术l实验要求:熟练使用该节所介绍网络编程API相关函数的使用方法。l实验器材:软件:1.安装了Ubunt的vmware虚拟机硬件:PC机一台l实验步骤:1、首先配置Ubunt的网络,使其与Window的IP地址在同一网段。网络配置方法如下:修改配置文件sudovi/etc/network/interfaces修改如下:autoloifaceloinetloopbackautoeth0#ifaceeth0inetstatic#address192.168.X.X//修
2、改IP地址为WindowsIP地址+100#gateway192.168.X.X//修改为Window的网关#netmask255.255.255.0重启网络管理器sudoservicenetwork-managerrestart重启网络服务:sudo/etc/init.d/networkingforce-reload==>重新加载网路配置文件sudo/etc/init.d/networkingrestart根据所学的TCP协议,服务器端和客户端进行通信的创建流程,实现客户端发送据到服务器端,服务器端接收数据。并将服务器端程序和客户端程序在两台电脑上进行运行演示。服务器端的创建流程为:各个
3、函数的使用方法参考实验文件夹下的《嵌入式Linux网络编程.pdf》。下面代码是设置socket可重绑定://SetSockoptintsinsize=1;intret=setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&sinsize,sizeof(int));if(ret!=0){perror("Setsockoptfail!");exit-1;}server.c的参考代码如下:#include1、修改上题代码用线程实现客户端和服务器端可以重复收发数据,模拟聊天。其中server.c的参考代码如下:#include4、/types.h>#include#include#include#include#include#include#include#include#definePORT6000#defineSERVER_IP"192.168.0.101"void*routine(void*arg){intnewsockfd=*(int*)arg;charbuf[10];while(1){bzero(buf,10);intsiz5、e=recv(newsockfd,buf,sizeof(buf),0);buf[size]=' ';printf("recivefromclientis:%s",buf);}}intmain(){charbuf[10]="hello";//bzero(buf,10);intsockfd=socket(AF_INET,SOCK_STREAM,0);if(sockfd<0){perror("socketfail");return-1;}//SetSockoptintsinsize=1;intret=setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&si6、nsize,sizeof(int));if(ret!=0){perror("Setsockoptfail!");exit-1;}structsockaddr_ins;memset(&s,0,sizeof(s));s.sin_family=AF_INET;s.sin_port=htons(6000);s.sin_addr.s_addr=inet_addr("192.168.0.101");//要求大端模式的端口号和IP地址intbi=bind(sockfd,(structsockaddr*)&s,sizeof(structsockaddr));if(bi<0){perror("bindf7、ail");}listen(sockfd,5);structsockaddr_inc;intsize=sizeof(structsockaddr);intnewsockfd=accept(sockfd,(structsockaddr*)&c,&size);/**********************************创建线程*******************************************
4、/types.h>#include#include#include#include#include#include#include#include#definePORT6000#defineSERVER_IP"192.168.0.101"void*routine(void*arg){intnewsockfd=*(int*)arg;charbuf[10];while(1){bzero(buf,10);intsiz
5、e=recv(newsockfd,buf,sizeof(buf),0);buf[size]=' ';printf("recivefromclientis:%s",buf);}}intmain(){charbuf[10]="hello";//bzero(buf,10);intsockfd=socket(AF_INET,SOCK_STREAM,0);if(sockfd<0){perror("socketfail");return-1;}//SetSockoptintsinsize=1;intret=setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&si
6、nsize,sizeof(int));if(ret!=0){perror("Setsockoptfail!");exit-1;}structsockaddr_ins;memset(&s,0,sizeof(s));s.sin_family=AF_INET;s.sin_port=htons(6000);s.sin_addr.s_addr=inet_addr("192.168.0.101");//要求大端模式的端口号和IP地址intbi=bind(sockfd,(structsockaddr*)&s,sizeof(structsockaddr));if(bi<0){perror("bindf
7、ail");}listen(sockfd,5);structsockaddr_inc;intsize=sizeof(structsockaddr);intnewsockfd=accept(sockfd,(structsockaddr*)&c,&size);/**********************************创建线程*******************************************
此文档下载收益归作者所有