创建socket描述符:int socket(int domain, int type, int protocal)
相关头文件:#include
#include
domain: AF_INET ipv4
type: SOCK_STREAM tcp协议
protocal:一般网络编程设置为0
连接connect: int connect(int sockfd, const struct sockaddr *addr, socklen_t addr_len)
相关头文件:#include
#include
struct sockaddr结构一般不常用,一般用sockaddr_in替代,
struct sockaddr_in在#include 中定义
struct sockaddr_in sa;
sa.sin_family=AF_INET;
sa.sin_port=htons(port); port为int类型 htons在#include
inet_aton(addr,&sa.sin_addr); addr为char*类型
该函数需要包含的头文件 #include
用来将一个字符串ip地址(127.0.0.1格式)转换为一个 32位的网络序列ip地址
如果这个函数成功,返回值为非0值
flags =fcntl(fd, F_GETFL) 返回fd描述符的状态标志(如是否阻塞模式) 返回值==-1表示函数执行失败
fcntl(fd,F_SETFL, flags|O_NONBLOCK) 所需头文件 #include
断开socket:close(int fd); #include
绑定端口:int bind(int sockfd, const struct sockadd *addr, sock_len addrlen) #include 成功返回0
侦听端口: int listen(int sockfd, int backlog) #include > > 成功返回0
接受链接 int accept(int sockfd, struct sockadd *addr, sock_len *addrlen) #include > > 失败返回-1 否则返回新连接的socket描述符
获取socket对等方ip地址:int getpeername(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
获取socket ip地址:int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
设置socket相关属性:int setsockopt(int sockfd, int level, int optname, const void *val, socklen_t oplen); #include > > 失败返回-1
如setsockopt(fd, SOL_SOCKET, SO_SNDBUF, &buffsize, sizeof(buffsize)
阅读(4321) | 评论(0) | 转发(0) |