1. int socket (int domain, int type, int protocol)
创建socket 对象
-
domain
选择AF_INET
, /* internetwork: UDP, TCP, etc. */ -
type
. 选择SOCK_STREAM
, 代表Tcp。 如果是udp的话,需要使用SOCK_DGRAM
-
protocol
填0, 由系统选择
2. int bind(int sockfd, const struct sockaddr* myaddr, socklen_t addrlen)
将socket 绑定到对应 ip 和 端口上
-
sockfd
前面返回的描述符 -
myaddr
包含有ip和port的struct 对象 -
addrlen
前一个stuct的长度
3. int listen(int sockfd, int backlog)
调用后,本地socket端口的状态变更为:LISTEN
, 可以使用netstat -nta -p tcp | grep 8766
在终端查看
-
sockfd
前面返回的描述符 -
backlog
此socket 接收的客户端的数量
4. int accept (int sockfd, struct sockaddr *addr, socklen_t *addrlen)
阻塞式等待客户端接入,客户端接入后返回。
传入server
的 sockfd
,返回接入后的sockfd
.
后面两个参数代表接口客户端的地址及struct长度
5. int recv(int sockfd, void *buf, int len, unsigned int flags)
tcp的接收客户端发来的数据
6. int write(int sockfd, const void *msg, int len, int flags)
或 int send(int sockfd, void *buf, int len, unsigned int flags)
tcp 往 客户端/服务器发送数据
7. int close(int sockfd)
或 Windows的 7. int closesocket(int sockfd)
关闭连接