linux网络编程分析课件.ppt

linux网络编程分析课件.ppt

ID:57058169

大小:56.00 KB

页数:15页

时间:2020-07-30

linux网络编程分析课件.ppt_第1页
linux网络编程分析课件.ppt_第2页
linux网络编程分析课件.ppt_第3页
linux网络编程分析课件.ppt_第4页
linux网络编程分析课件.ppt_第5页
资源描述:

《linux网络编程分析课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、网络编程实例分析功能描述客户端连接服务器后从标准输入读取输入的字符串,发送给服务器;服务器接收到字符串后,发送接收到的总字符串个数给客户端;客户端将接收到的服务器的信息打印到标准输出。服务器端程序流程建立套接字、初始化绑定网络地址、将套接字与网络地址绑定、设置侦听队列长度、接收客户端连接、收发数据、关闭套接字。建立套接字进行套接字编程需要指定套接字的地址作为参数,不同的协议族有不同的地址结构定义方式。这些地址结构通常以sockaddr_开头,每一个协议族有一个唯一的后缀,例如对于以太网,其结构名称为sock

2、addr_in。建立套接字intsocket(domain,inttype,protocol);参数domain用于设置网络通信的域,根据这个参数选择通信协议的族。以太网中用AF_INET这个域。参数type用于设置套接字通信类型,SOCK_STREAM流式套接字类型。参数protocol用于指定摸个协议的特定类型。设置服务器地址在地址和端口赋值时要用htons和htonl函数。是用来将主机字节顺序转换为网络字节顺序。 在进行网络抓包时,抓到的包的数据是网络字节顺序,在进行编程时,要进行主机字节顺序和网络字

3、节顺序间的转换。htonl是针对32位,4个字节而言htons是针对16位,2个字节而言绑定在建立套接字文件描述符成功后,需要对套接字进行地址和端口的绑定,才能进行数据的接收和发送操作。bind(s,(structsockaddr*)&server_addr,sizeof(server_addr))侦听服务器处理客户端连接请求的时候是顺序处理的,同一时间仅能处理一个客户端连接。当多个客户端的连接请求同时到来的时候,服务器并不是同时处理,而是将不能进行处理的客户端连接请求放到等待队列中,这个队列的长度由lis

4、ten()函数来定义。listen(s,backlog)。backlog是等待队列的长度。接受网络请求accept()当一个客户端的连接请求到达服务器主机侦听的端口时,此时客户端的连接会在队列中等待,直到使用服务器处理接收请求。函数accept()成功执行后,会返回一个新的套接字文件描述符来表示客户端的连接,客户端连接的信息可以通过这个新描述符来获得。因此当服务器成功处理客户端的请求连接后,会有两个文件描述符,老的文件描述符表示正在监听的socket,新产生的文件描述符表示客户端的连接,函数send()和r

5、ecv()通过新的文件描述符进行数据收发。sc=accept(ss,(structsockaddr*)&client_addr,&addrlen)分叉进程在主循环中为了方便处理,每个客户端的请求服务器会分叉一个进程进行处理。为了防止误操作,在父进程中关闭了客户端的套接字描述符,在子进程中关闭了父进程的侦听描述符。pid=fork();if(pid==0){close(ss);process_conn_server(sc);}else{close(sc);}写入函数write()当服务器端在接收到一个客户端的

6、连接后,可以通过套接字描述符进行数据的写入操作。将缓冲区buffer的数据全部写入套接字文件描述符s中write(s,buffer,strlen(buffer));读函数read()使用read()函数可以从套接字描述符中读取数据。读取数据的方式如下所示,从套接字描述符s中读取1024个字节,放入缓冲区buffer中,size变量的值为成功读取的数据大小。size=read(s,buffer,1024)客户端网络程序建立一个流式套接字后,将服务器的地址和端口绑定到套接字描述符上。然后连接服务器,进程处理。最

7、后关闭连接。连接目标网络服务器connect客户端在建立套接字之后,不需要进行地址绑定,就可以直接连接服务器。连接服务器的函数为connect(),此函数连接指定参数的服务器,例如IP地址,端口等。connect(s,(structsockaddr*)&server_addr,sizeof(structsockaddr))客户端从标准输入读取数据到缓冲区buffer中,发送到服务器端。然后从服务器端读取服务器的响应,将数据发送到标准输出。size=read(0,buffer,1024);write(s,bu

8、ffer,size);size=read(s,buffer,1024);write(1,buffer,size);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。