unix socket网络编程TCP简单例子
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,server.c#include #include #include #include #include #include #include #include int main(int
千家信息网最后更新 2026年11月01日unix socket网络编程TCP简单例子
- server.c
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <arpa/inet.h>
- #include <stdio.h>
- #include <unistd.h>
- int main(int argc, char** argv)
- {
- int ret;
- //创建socket文件
- int sockfd = socket(AF_INET, SOCK_STREAM, 0);
- if(sockfd == -1)
- {
- perror("socket\n");
- exit(1);
- }
- printf("socket_fd = %d\n",sockfd);
- //重复使用本地址与socket文件进行绑定,如果不设置系统,会保留此连接直到最后一引用才释放,即进程结束后系统需要几分钟后才能重新进行绑定
- int i = 1;
- ret = setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
- if(ret)
- {
- perror("setsockopt\n");
- exit(1);
- }
- printf("setsockopt complete!\n");
- //创建服务器socket地址sock_addr
- struct sockaddr_in server_addr;
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(4444);
- //地址指定INADDR_ANY表示可以接收安装在系统里面所有网卡的数据包
- server_addr.sin_addr.s_addr = INADDR_ANY;
- memset(server_addr.sin_zero, 8, 8);
- //将socket与地址进行绑定,这样可以使所有发向端口4444及协议为IPV4数据包指向socket文件
- ret = bind(sockfd, (struct sockaddr*)&server_addr, sizeof(struct sockaddr));
- if(ret)
- {
- perror("bind\n");
- exit(1);
- }
- printf("bind complete!\n");
- //监听连接到该socket上请求,不会发生阻塞行为,以下设置队列大小为1,即队列满的时候其它连接会被拒绝连接
- ret = listen(sockfd, 10);
- if(ret)
- {
- perror("listen\n");
- exit(1);
- }
- printf("listen complete!\n");
- //接收连接请求并建立连接, 如果没有连接请求 accept会一址阻塞,直到有请求来
- struct sockaddr_in client_addr;
- int client_fd;
- socklen_t len = sizeof(struct sockaddr);
- client_fd = accept(sockfd, (struct sockaddr*)&client_addr, &len);
- if(client_fd == -1)
- {
- perror("bind\n");
- exit(1);
- }
- printf("accept complete!\n");
- //请取client发来的信息
- char buf[100];
- ssize_t readnum;
- memset(buf,100,0);
- //这里应该是客户端的socket文件描述符
- readnum = recv(client_fd, (void*)buf, 100, MSG_WAITALL);
- //清空标准输出
- fflush(stdout);
- printf("received:%s\nnumber byte:%d\n",buf,strlen(buf));
- //发送信息到用户端
- ssize_t sendnum;
- char content[100]="\"server:received the data!\"";
- sendsendnum = send(client_fd, content, 100, 0);
- printf("reply:%s\nnumber byte:%d\n",content,sendnum);
- // 关闭socket文件
- close(sockfd);
- close(client_fd);
- return 0;
- }
- client.c
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <arpa/inet.h>
- #include <stdio.h>
- #include <unistd.h>
- #include <arpa/inet.h>
- int main(int argc, char** argv)
- {
- int ret;
- //创建socket文件
- int sockfd = socket(AF_INET, SOCK_STREAM, 0);
- if(sockfd == -1)
- {
- perror("socket\n");
- exit(1);
- }
- printf("socket_fd = %d\n",sockfd);
- //创建服务器socket地址sock_addr
- struct sockaddr_in server_addr;
- server_addr.sin_family = AF_INET;
- server_addr.sin_port = htons(4444);
- //将字符串地址转换成网络地址,有两种方法
- inet_pton(AF_INET, "127.0.0.1", (void*)&server_addr.sin_addr.s_addr);//IPV4 IPV6可用
- //server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");//只能转IPV4
- memset(server_addr.sin_zero, 8, 0);
- //连接服务端
- ret = connect(sockfd, (struct sockaddr*)&server_addr,sizeof(struct sockaddr));
- if(ret == -1)
- {
- perror("connect\n");
- exit(1);
- }
- printf("connect complete!\n");
- //发送信息
- char content[100] = "\"hello,i am client!\"";
- ssize_t sendsendnum = send(sockfd, content, strlen(content)+1, 0);
- printf("send complete\nnumber byte:%d\ncontent:%s\n",sendnum,content);
- //收信息
- char buf[100];
- ssize_t readnum;
- memset(buf,100,0);
- readnum = recv(sockfd, (void*)buf, 100, MSG_WAITALL);
- //清空标准输出
- fflush(stdout);
- printf("received:%s\nnumber byte:%d\n",buf,strlen(buf));
- //关闭socket
- close(sockfd);
- return 0;
- }
地址
文件
信息
系统
服务
数据
服务器
标准
队列
输出
阻塞
网络
可以使
大小
字符
字符串
客户
指向
方法
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
中智农互联网科技
上海睿民互联网科技有限公司
麻工互联网科技
广州互联网科技公司
易互联网科技有限公司
青岛互联网科技公司
卓越科技(互联网 )
互联网科技素材视频竖屏
福州新华互联网科技学校 知乎
互联网对科技的发展
广州市恰铎互联网科技有限公司
世界互联网领先科技成果获奖
工业互联网山东科技大学
上海钢联属于互联网科技股吗
互联网科技快讯热点
唯美互联网科技
云南互联网科技学费
唐山双旺合互联网科技产业园
绵阳真晨互联网科技有限公司
互联网科技大佬云集
互联网科技保险
新华互联网科技学院
卓越科技(互联网 )
浩特互联网科技
亿人帮互联网科技
上海电发互联网科技有限公司
以后互联网后是啥科技
青海科技产业互联网发展
承德科技产业互联网平台
互联网科技创业有什么好项目