TCP函数
1、socket()
函數的作用:創建一個socket()套接字
函數的頭文件:#include <sys/socket.h>
函數的原型:int socket(int domain, int type, int protocol);
函數的參數:
?????????Domain:表示使用何種地址類型
?????????????????AF_INET:IPV4網絡絡協議
?????????????????AF_INET6:IPV6網絡協議
????????Type:SOCK_STREAM,TCP:面向數據流的
??????????????SOCK_DGRAM,UDP:使用不連續不可信賴的數據包連接
??????????????SOCK_RAW ?????????提供原始網絡協議
????????Protocol:指定傳輸協議編號,一般設為0即可
函數的返回值:
????????成功:返回套接字描述符
????????出錯:-1
2、bind()
函數的作用:綁定IP地址
函數的原型:int bind(int sockfd, struct sockaddr * hostaddr, int addrlen)
函數的頭文件:#include <sys/types.h>、#include <sys/socket.h>
函數的參數:
????????Sockfd:socket套接字描述符
????????Hostaddr:主機的地址
????????Addrlen:sockaddr的地址長度
???????????????Struct sockaddr_in{
?????????????????????Unsigned short sin_family; ??????網絡協議
?????????????????????Uint6_t ?sin_port; ????????????端口號
?????????????????????Struct in_addr sin_addr; ?????????地址
?????????????????????Unsigned char size_zero[8]; ???????未使用
??????????????};
3、listen()
函數的作用:監聽網絡、等待連接
函數的原型:int listen(int sockfd, int backlog)
函數的參數:
???????????Sockfd:套接字描述符
???????????Backlog:允許接入的客戶端的數目
函數的返回值:
?????????成功:返回0,
?????????出錯:返回 -1
*注意:listen并沒有連線,只是設置socket的listen模式,真正連線的是accept。
?
4、accept()
函數的作用:接受網絡連接,客戶端的連接(這是三次握手的地方)
函數的原型:int accept(int sockfd, struct sockaddr *addr, int *addrlen);
函數的參數:
?????????Sockfd:套接字描述符
?????????Addr:連接成功、填充遠端客戶機的地址
?????????Addrlen:struct ?sockaddr的長度
函數的返回值:
??????成功:返回新的套接字描述符(new_sockfd)....與之前的描述符不同
??????出錯:返回 -1
5、send()
函數的作用:經過socket傳送數據,向對方發送數據
函數的原型:int send(int new_sockfd, const void *msg, int len, unsigned int flags)
函數的參數:
???????New_sockfd:由accept建立起來的socket連接描述符,連接遠方的IP地址
???????Msg:發送的數據
???????Len:發送的數據長度
???Flags:一般設為0
函數的返回值:
???????成功:實際傳送出去的字節數
???????出錯:返回 -1.
6、recv()
函數的作用:經過socket接受數據
函數的原型:int recv(int new_sockfd, void *buf, int len, unsigned flags)
函數的參數:
????????New_sockfd:accept以后的socket套接字描述符
????????Buf:存放地址
????????Len:接收數據的長度
????????Flags:一般設為0
函數的返回值:
????????成功:返回接收的字節數
????????出錯:返回 -1.
7、connect()
函數的作用:建立socket連接,通??蛻舳诉B接服務器使用
函數的原型:int connect(int sockfd, struct sockaddr *serv_addr, int addrlen)
函數的參數:
????????Sockfd:socket套接字描述符
????????Serv_addr:表示要連接的服務器的地址
????????Addrlen:struct sockaddr的長度
函數的返回值:
???????成功:返回0
???????出錯:返回 -1
8、sendto()
函數的作用:傳送socket數據,一般UDP使用
函數的原型:int sendto(int sockfd, const void *msg, int len, unsigned int flags, const struct sockaddr *todaar, int tolen)
函數的參數:
?????Sockfd:套接字描述符
?????Msg:發送的消息內存
?????Len:消息長度
?????Toaddr:要發送消息的目的地址
?????Tolen:sizeof(struct ?sockaddr)
函數的返回值:
?????成功:返回實際傳送的字節數
?????出錯:返回 -1
9、recvfrom()
函數的作用:從socket接收數據
函數的原型:int recvfrom(int sockfd, void *buf, int len, unsigned int flags, struct sockaddr * ?fromaddr, int fromlen)
函數的參數:同sendto 一樣
函數的返回值:
???????成功:返回實際接收的字節數
???????出錯:返回 -1.
總結