Linux/Code/ser.c

66 lines
1.7 KiB
C
Raw Permalink Normal View History

2025-06-10 23:43:56 +08:00
#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;
}