您的位置:首页 > 理论基础 > 计算机网络

网络编程相关函数

2014-07-02 08:20 239 查看
一、socked

int socket(int domain,int type,int protocol);
用来创建一个套接字,完成本地进程间或者网络通信。
返回值:文件描述符或-1(出错)
参数:
1.通信域:
AF_LOCAL/AF_UNIX: 本地通信域,进程间通信
AF_INET: ipv4的网络通信域
AF_INET6: ipv6的网络通信域
2.通信类型:
SOCK_STREAM: tcp协议需要的参数。
SOCK_DGRAM: udp协议需要指定的参数。
SOCK_RAW: 原始套接字,可以直接操作没有经过内核拆包的数据帧。
3.需要的协议:
一般不用指定,固定为0

二、bind
int bind(int sockfd,struct sockaddr *my_addr,int
addrlen)

将一个套接字和地址(IP+PORT)绑定。
返回值:成功0, 失败-1
参数:
1.socket返回的文件描述符
2.通用地址结构体指针。
3.结构体大小。

专门用在网络通信中的地址结构体:
struct sockaddr_in {
unsigned short sin_family;
unsigned short sin_port;
struct in_addr {
unsigned int s_addr;
}sin_addr;
unsigned char sin_zero[8];
};
三、listen

int listen(int sockfd,int backlog)
用来监听链接,完成Listen()调用后,socket 变成了监听socket(listening
socket)
返回值:成功 0 ,失败 1
参数:
sockfd:监听链接的套接字
backlog:指定了正在等待链接的队列最大长度
四、accept
int accept(int sockfd,struct sockaddr *addr,socklen_t
*addrlen)
接受链接请求并生成新的套接字
返回值:已建立好的链接的套接字或失败返回-1
参数:
sockfd :监听套接字
addr:对方地址
addrlen:地址长度
五、connect
int connect(int sockfd ,struck sockaddr *serv_addr,int
addrlen);
客户端通过系统调用向服务器发送的链接请求
返回值:成功0,失败-1
参数:
sockfd:socket返回的描述符
serv_addr:服务器端的地址信息
addrlen:地址的长度
六、send/recv
ssize_t send/recv(int sockfd,const void *buffer,size_t
length,int flags)

发送/接受信息
返回值:成功 实际发送/接受的字节数,失败 -1
参数:buffer:发送/接受缓冲区首地址
length:发送/接受的字节数
flags:发送/接受方式(通常为0堵塞)
七、sendto/recvfrome
ssize_t sendto(int sockfd,void *message,size_t length,int
flags,struct sockaddr *dest_addr,socklen_t dest_len)
这两个函数在使用UDP时代替send/recv
参数:

参数:message:发送/接受缓冲区首地址
length:发送/接受的字节数
flags:发送/接受方式(通常为0堵塞)

dest_addr发送或接受方的地址
dest_len发送或接受方的地址长度
八、close
int close(int sockfd)
关闭套接字
九、

setsockopt: 设定网络套接字的属性。
参数:
1.sockfd
2.level:
套接字:SOL_SOCKET
传输层:IPPROTO_UDP | IPPROTO_TCP
网络层:IPPROTO_IP
3.optname:
具体根据level 查看相应的man手册.
4.optval:
操作值,类型大部分是int, 真为使能,假为禁止。
具体参照相应的optname, 参看man 手册。
5.optlen
操作值的大小。
返回值:成功 0, 失败 -1, 并会设置errno。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: