Linux下tcp服务器创建的步骤
创建一个socket,使用函数socket()
socket(套接字)实质上提供了进程通信的端点,进程通信之前,双方首先必须建立各自的一个端点,否则没有办法通信。通过socket将ip地址和端口绑定之后,客户端就可以和服务器通信了
#include<sys/socket.h>
int socket(int domain , int type ,int protocol)
返回值:成功返回套接字文件描述符,失败返回-1
struct sockaddr_in (或者 struct sock_addr)用于记录网络地址
struct sockaddr_in
{
short int sin_family;/*协议族*/
unsigned short int sin_port;/*端口号*/
stunt in_addr sin_addr; /*协议特定地址*/
unsigned char sin_zoero[8]; /*填0*/
}
ip地址转换
int inet_aton(const char *cp,struct in_addr *inp)//将a.b.c.d形式的ip转换为32位的ip。存储在inp指针里
char *inet_ntoa(struct in_addr in)//将32位ip转换位a.b.c.d的格式
字节序转换
绑定ip地址和端口信息到socket,使用函数bind()
让用户发现用以连接的服务器的地址
返回值:成功返回0,失败返回-1
#include <sys/socket.h>
int bind ( int sockfd , const struct sockaddr *addr , socklen_t len );
设置允许的最大连接数,使用函数listen()
服务器调用listen函数来宣告可以接受连接请求
#include <sys/socket.h>
int listen(int sockfd , int backiog );
返回值:成功返回0,失败返回-1
参数backiog:用于表示服务器能接受的请求数量
等待来自客户端的连接请求,使用函数accept( )
#include <sys/socket.h>
int accept( int sockfd ,struct sockaddr *restrict addr , socklen_t * restrict len );
收发数据,用函数recv()、send()/ sendto()或者 read()、write()
关闭网络连接,close