Linux 之 网络编程基础
来源:互联网 发布:optical flow算法介绍 编辑:程序博客网 时间:2024/06/03 16:41
网络编程基础API
socket地址API创建socket监听socket接收连接发起连接关闭连接数据读写
socket地址API
主机字节和网络字节转换API: #include <netinet/in.h> //主机字节转换成网络字节 unsigned short int htons(unsigned short int hostshrot); //网络字节转换成主机字节 unsigned short int ntohs(unsigned short int netshrot);专用socket地址结构体: //TCP/IP协议族专用socket地址结构体 struct sockaddr_in { sa_family_t sin_family; //地址族:AF_INET u_int16_t sin_port; //端口号, 要用网络字节序表示 struct in_addr sin_addr; //IPv4地址结构体,是u_int32_t s_addr; };IP转换函数: #include <arpa/inet.h> //将字符串IP转换为整数IP int inet_pton(int af, const char* src,void* dst); //将整数IP转换成字符串IP const char* inet_ntop(int af, const void* dst,socklen_t cnt);
创建socket
创建socket: #include <sys/types> #incliude <sys/socket.h> /* domain:底层协议族类型 type: 指定服务类型 protocol :具体的协议 */ int socket(int domain, int type, int protocol);命令socket: #include <sys/types> #include <sys/socket.h> // 服务器绑定网络地址 int bind(int sockfd, const struct sockeaddr* addr,socketlen_t addrlen);bind函数成功返回0,否则为-1,常见errno类型: EACCES:被绑定的地址受到保护。 EADDRINUSE:被绑定的地址正在使用中。
监听socket
监听socket:#include <sys/socket.h>int listen(int sockfd,int backlog);
接收连接
接收连接API: #include <sys/types.h> #include <sys/socket.h> int accept(int sockfd,struct sockaddr* addr,socklen_t* addrlen);
发起连接
发起连接API: #include <sys/types.h> #include <sys/socket.h> int connect(int sockfd,const struct sockaddr* serv_addr,socklen_t addrlen);connect函数成功返回0,否则为-1,常见errno类型: ECONNEFUSED:目标端口不存在 ETIMEOUT:连接超时
关闭连接
关闭连接API: #include <unistd.h> #include <sys/socket.h> int close(int fd); int shutdown(int sockfd,int howto);shutdown函数中howto参数选项 SHUT_RE:关闭读这一半 SHUT_WR:关闭写着一半 SHUT_RDWR:同时关闭读和写
数据读写
TCP数据读写API: #include <sys/types.h> #include <sys/socket.h> ssize_t recv(int sockfd,void* buf,size_t len,int flags); ssize_t send(int sockfd,cons void* buf,size_t len,int flags);recv函数和send函数的flags参数选项 MSG_WAITALL:读操作读取到一定数量字节后返回 MSG_PEEK:查看读缓冲中的数据而不取出UDP数据读写API: #include <sys/types.h> #include <sys/socket.h> ssize_t recvfrom(int sockfd,void* buf,size_t len,int flags,struct sockaddr* src_addr,socklen_t* addrlen); ssize_t sendto(int sockfd,cons void* buf,size_t len,int flags,const struct sockaddr* dest_addr,sockelen_t addrlen);
TCP服务端/客户端开发过程
TCP连接通信流程
UDP服务端/客户端开发过程
(未完待续……持续更新……)
0 0
- Linux 之 网络编程基础
- Linux网络编程之套接字基础
- Linux应用程序设计之网络基础编程
- Linux系统之网络编程[基础概要]
- Linux网络编程之网络编程基础服务端
- Linux网络编程之网络编程基础客户端
- Linux网路编程网络基础之网络‘协议的概念
- linux网络编程基础
- Linux 网络编程基础
- Linux网络编程基础
- Linux网络编程基础
- linux 网络编程基础
- Linux网络编程基础
- linux网络编程基础
- linux网络编程基础
- Linux网络编程基础
- Linux网络编程基础
- Linux网络编程基础
- js如何调用ocx控件
- oracle数据库的字符集更改(测试机上玩玩即可)
- 获取开始及结束日期间隔月份或年份列表
- Android SlidingMenu 使用详解
- 4种activity 的启动模式
- Linux 之 网络编程基础
- HDFS备注
- FragmentPagerAdapter刷新Fragment终极解决方案
- CodeForces 732D Exams
- 玩转Dragonboard 410c USB摄像头-人脸识别
- C/C++中“#”和“##”的作用和用法
- 使用golang快速开发微信公众平台(八):获取用户二维码
- 在Xcode中使用OpenCV
- 多态的简单概括