#include #include /* See NOTES */ #include #include #include #include #include #define SERVER_ADDR "172.29.147.16" //服务器的IP地址 #define SERVER_PORT 20000 //port 服务器的端口号 int main() { int ret; //1、买手机(建立套接字) int socketFd = socket(AF_INET, SOCK_STREAM, 0); if(socketFd == -1){ perror("socket error"); exit(0); } //2、绑定自己的电话号码(绑定自己的IP地址和端口号) //定义一个IPV4结构体变量,存储IP地址和端口号 struct sockaddr_in serverAddr; serverAddr.sin_family = AF_INET ;//IPv4 serverAddr.sin_port = htons(SERVER_PORT);//16端口号 --本地端口号--网络端口号 serverAddr.sin_addr.s_addr = inet_addr(SERVER_ADDR); //32IP地址 --本地IP--网络IP ret = bind(socketFd, (struct sockaddr*)&serverAddr, sizeof(struct sockaddr_in)); if(ret == -1){ perror("bind error"); exit(0); } //3、设置铃声(设置监听) ret = listen(socketFd, 20); //20表示同时连接上来的客户端的最大数量 if(ret == -1){ perror("listen error"); exit(0); } printf("阻塞等待新的客户端连接......\n"); //4、坐等电话(阻塞等待客户端的连接) int newClientFd = accept(socketFd, NULL,NULL); if(ret == -1){ perror("accept error"); exit(0); } //注意 accept函数的返回值 表示 新的客户端的文件描述符 ,后面与客户端通信 必须使用该文件描述符 printf("有新的客户端连接上来....\n"); //5、聊天 接收 数据 while(1) { char buf[1024]={0}; read(newClientFd,buf,sizeof(buf)); printf("buf:%s\n",buf); } //6、关闭 断开连接 close(socketFd); close(newClientFd); return 0; }