Linux/Code/ser.c
2025-06-10 23:43:56 +08:00

66 lines
1.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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;
}