66 lines
1.7 KiB
C
66 lines
1.7 KiB
C
#include<stdio.h>
|
||
#include <sys/types.h> /* See NOTES */
|
||
#include <sys/socket.h>
|
||
#include <sys/socket.h>
|
||
#include <arpa/inet.h>
|
||
#include <unistd.h>
|
||
#include<stdlib.h>
|
||
|
||
|
||
|
||
#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;
|
||
}
|