服务端通讯流程
服务端:
1、通过socket()函数创建用于接收连接请求的socket
2、构造主机连接地址的sockaddr_in结构体,包括sin_family,sin_port,sin_addr三个成员
3、绑定sockaddr_in结构体和socket
4、通过listen()函数将stocket设置为监听模式
5、调用accept()函数等待接收客户端的连接请求,并返回用于传递信息的stocket
6、和客户端进行通信
7、调用close()关闭socket
TCP服务端基本通讯示例
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
int main(int argc,char *argv[])
{
if (argc!=2)
{
printf("Using:./server port\nExample:./server 5005\n\n"); return -1;
}
int listenfd;
if ( (listenfd = socket(AF_INET,SOCK_STREAM,0))==-1) {
perror("socket"); return -1; }
struct sockaddr_in servaddr;
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(atoi(argv[1]));
if (bind(listenfd,(struct sockaddr *)&servaddr,sizeof(servaddr)) != 0 )
{
perror("bind"); close(listenfd); return -1; }
if (listen(listenfd,5) != 0 ) {
perror("listen"); close(listenfd)<