c语言socket套接口API
来源:互联网 发布:知乎 我的队友四条狗 编辑:程序博客网 时间:2024/05/01 23:26
c语言socket通信包含以下几个最常用的函数。根据使用方(客户端或服务端)有不同的调用方法,简单示图如下:
1、socket()
要建立一个网络连接,不论客户端或服务端首先都要调用socket()函数建立一个网络通信的套接口:
#include<sys/types.h>
#include<sys/socket.h>
int socket(int domain, int type, int protocol);
第一个参数domain为网络通信的协议族,使用ipv4则设为AF_INET,ipv6则设为AF_INET6。
第二个参数是套接口的类型:SOCK_STREAM或SOCK_DGRAM。
第三个参数表示通信协议,一般设置为0。
正常返回一个套接口描述符(文件描述符),出错,则返回-1。
2、connect()
客户端用来连接服务端的函数
#include<sys/types.h>
#include<sys/socket.h>
int connect (int sockfd,struct sockaddr * serv_addr,int addrlen);
第一个参数为socket()返回的套接口描述符。
第二个参数为struct sockaddr类型的地址指针,表示要连接的地址和端口。
第三个参数为地址结构的长度。
正常返回0,出错返回-1。
3、bind()
bind()函数为客户端使用的函数,用来对 socket()获得的套接口描述符绑定到本地的地址和端口上
#include <sys/socket.h>
int bind(int socketfd, const struct sockaddr *address, socklen_t address_len);
第一个参数为socket()返回的套接口描述符。
第二个参数为struct sockaddr类型的地址指针,表示要绑定在套接口上的本地地址和端口。
第三个参数为地址结构的长度。
正常返回0,出错返回-1。
4、listen()
socket()建立的套接口为主动连接,服务端需要的是监听连接,故需要调用此函数将套接口转为被动连接。
#include <sys/types.h>
#include <sys/socket.h>
int isten(int sockfd, int backlog);
第一个参数为socket()返回的套接口描述符。
第二个参数为listen队列的长度,超过长度后的连接将出现连接D 错误WSAECONNREFUSED
正常返回0,出错返回-1。
5、accept()
当服务端listen()接收到来自客户端用connect()发起的连接时,只会将连接放入请求队列中,而accept()函数会选择队列最前端的连接,创建一个新的套接口来与该请求进行通信。即accept()也会返回一个套接口,用来真正的与客户端进行通信。
#include <sys/types.h>
#include <sys/socket.h>
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
第一个参数为socket()返回的套接口描述符。
第二个参数为struct sockaddr类型的地址指针,用来记录客户端请求的地址和端口
第三个参数为地址结构的长度。
正常返回一个套接口描述符,出错返回-1。
6、send()和recv()
当连接建立后(客户端通过connect(),服务端通过accept()),通过send()和recv()来发送和接受数据。
#include <sys/types.h>
#include <sys/socket.h>
int send(int sockfd,const void* msg,int len,int flags);
int recv(int sockfd,void* buf,int len,unsigned int flags);
第一个参数为已连接的套接口。
第二个参数为要发送/接收的数据缓冲区。
第三个参数为要发送/接收数据长度。
第四个参数为调用方式(一般设置为0)。
7、close()
可以用来关闭接收连接的套接口
close(sockfd);
- c语言socket套接口API
- 原始套接口(RAW SOCKET)
- socket套接口函数详解
- TCP套接口编程(Socket)
- MySQL的C语言API接口
- MySQL的C语言API接口
- SQLITE3 C语言接口 API 函数简介
- UDP socket (UDP套接口通信)
- 套接口Socket数据发送过程详解
- unix下socket套接口编程详解
- UNIX的套接口(Socket)编程
- socket套接口选项设置实例
- socket套接口的 值-结果参数
- c++ 接口api socket
- Vision Lab Features Library (VLFeat)库C语言API接口
- MYSQL数据库在C语言API函数接口
- Mysql的C语言API接口在项目中的使用
- Linux Socket学习之:套接口选项 getsockopt 、setsockopt
- linux下使用source insight
- /var/log/ 日志文件功能详解
- JAVA里面关于byte数组和String之间的转换问题
- 空中消息参数
- Struts2开发自定义标签使用后续——自定义下拉菜单
- c语言socket套接口API
- flume日志采集
- c语言结构体用法
- ExtJS的使用方法汇总4——拖放以及弹出窗口
- linux重定向命令应用及语法
- mysql服务器忘记了超级管理员root密码
- 音视频同步技术(表格)
- java中string与byte[]的转换
- back trace