![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux c/c++ 网络编程
linux c/c++网络编程
洪流之源
这个作者很懒,什么都没留下…
展开
-
linux网络编程(10)fcntl函数实现IO多路转换
前面介绍的函数如recv、send、read和write等函数都是阻塞性函数,若资源没有准备好,则调用函数的进程进入阻塞状态,使用fcntl函数可以实现IO的非阻塞,也就是所谓的IO多路转换。主线程负责接收客户端请求,收到请求后将对应的套接字描述符存放在动态数组中,一个子线程负责遍历该套接字描述符的动态数组,并处理对应套接字的客户端请求。动态数组头文件vector_fd.h:#ifndef __V...原创 2018-06-30 17:25:39 · 267 阅读 · 0 评论 -
linux网络编程(9)UDP服务器与客户端代码
服务器代码:#include <sys/socket.h> #include <unistd.h> #include <signal.h> #include <string.h> #include <stdio.h> #include <time.h> #include <stdlib.h> #include &a原创 2018-06-23 16:29:20 · 1046 阅读 · 0 评论 -
linux网络编程(8)UDP编程模型与数据收发系统调用
UDP编程模型比较TCP编程模型,UDP编程模型中服务器端不需要listen和accept,而是通过readfrom阻塞等待用户请求,UDP编程模型中的客户端不再需要connect服务器,只需要bind套接字与IP即可,当然bind也不是必须要有的。UDP编程步骤1、服务器:1) 在内核中创建结构体struct socket2) 用户空间中创建地址结构体struct sockaddr_in3) 往...原创 2018-06-23 16:21:54 · 588 阅读 · 0 评论 -
linux网络编程(7)基于多线程的TCP服务器与客户端编程
服务器端:#include <netdb.h> #include <sys/socket.h> #include <time.h> #include <unistd.h> #include <memory.h> #include <signal.h> #include <string.h>原创 2018-06-19 17:31:11 · 1003 阅读 · 0 评论 -
linux网络编程(6)基于多进程的TCP服务器与客户端编程
服务器端:#include <netdb.h> #include <sys/socket.h> #include <time.h> #include <unistd.h> #include <memory.h> #include <signal.h> #include <string.h>原创 2018-06-15 17:30:56 · 490 阅读 · 0 评论 -
linux网络编程(5)基于TCP的客户端程序
#include <unistd.h> #include <netdb.h> #include <sys/socket.h> #include <stdlib.h> #include <stdio.h> #include <memory.h> #include <string.h> #include <原创 2018-06-14 14:03:49 · 1942 阅读 · 0 评论 -
linux网络编程(4)基于TCP的服务器端程序
下面是服务端的程序代码,客户端连接成功后服务器将打印出客户端的地址信息,并将服务器本地的时间发送给客户端:#include <netdb.h> #include <sys/socket.h> #include <time.h> #include <unistd.h> #include <memory.h> #include <sig...原创 2018-06-14 10:56:25 · 847 阅读 · 0 评论 -
linux网络编程(3)TCP编程模型与TCP的连接、关闭
TCP编程模型服务器端调用序列:1.调用socket函数创建套接字;2.调用bind函数绑定本地地址和端口号;3.调用listen启动监听;4.调用accept从已连接队列中提取客户连接;5.调用IO函数(read/write)与客户端通信;6.调用close关闭套接字。客户端调用序列:1.调用socket函数创建套接字;2.调用connect连接服务器;3.调用IO函数与服务器通信;4.调用cl.........原创 2018-06-13 17:14:16 · 1597 阅读 · 0 评论 -
linux网络编程(2)字节序、地址结构
1.字节序不同体系结构的主机使用不同的字节序存储器保存多字节整数。字节序存储顺序不同,有的系统高位在前,低位在后(大端字节序),而有的系统是低位在前,高位在后(小端字节序)。以32位存储为例:网络中协议中使用的网络字节序高位在前,低位在后,也就是大端字节序。因此,如果计算机存储的字节序与网络字节序不一致的话,需要进行字节序的转换。下面是不同长度的整数网络字节序与主机字节序直接转换的函数(会根据主机...原创 2018-06-13 14:55:12 · 332 阅读 · 0 评论 -
linux网络编程(1)Socket套接字
socket(套接字)是一种通信机制,它包含一整套的调用接口和数据结构的定义,它给应用程序提供了使用如TCP/UDP等网络协议进行网络通信的手段。Linux中的网络编程通过socket接口实现,socket是一种特殊的IO,提供对应的文件描述符。一个完整的socket都有一个相关描述{协议, 本地地址, 本地端口, 远程地址, 远程端口};创建socket#include <sys/sock...原创 2018-06-13 12:16:33 · 299 阅读 · 0 评论