c server client
v0.1.0
使用C套接字创建服务器客户客户应用程序。
克隆项目,并进入主要目录。
打开终端并使用以下命令设置服务器:
./server [port]您应该得到这样的结果:
Listening on 0.0.0.0:8080之后,使用此命令使用客户端连接到服务器:
./client [IP] [port]插座编程是连接网络上两个节点以相互通信的一种方式。一个套接字(节点)在IP上在特定端口上聆听,而其他插座则与另一个插座伸出来形成连接。服务器形成侦听器套接字,而客户端伸向服务器。
int sockfd = socket ( domain , type , protocol ) int bind ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );创建套接字后,绑定功能将套接字绑定到ADDR(自定义数据结构)中指定的地址和端口号。在示例代码中,我们将服务器绑定到Localhost,因此我们使用InAddr_any来指定IP地址。
int listen ( int sockfd , int backlog );它将服务器套接字放在被动模式下,在那里等待客户端接近服务器建立连接。积压,定义了sockfd待处理连接队列的最大长度可能会增长。如果连接请求在队列已满时到达,则客户可能会收到带有Econnefuse的错误。
int new_socket = accept ( int sockfd , struct sockaddr * addr , socklen_t * addrlen );它在收听套接字的待处理连接队列中提取第一个连接请求,SOCKFD,创建一个新的连接套接字,并返回一个新的文件描述符,引用该套接字。在这一点上,客户端和服务器之间建立了连接,他们准备传输数据。
int connect ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );Connect()系统调用将文件描述符SockFD引用的套接字连接到ADDR指定的地址。服务器的地址和端口在ADDR中指定。
pthread_t thread_id ;
pthread_create ( & thread_id , NULL , client_handler , ( void * ) & client_socket );使用pthread为我们的每个客户端创建线程,并使用特定方法处理它们。