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安全错误
数据库的锁怎样保障安全
互联网高科技
上海卓越科技互联网
河南真二互联网科技有限公司
互联网金融公司科技
贷财互联网科技
无线互联网科技
互联网科技ppt模板
居家互联网科技有限公司
佩信高科技互联网
互联网金融科技公司干啥的
成都互联网科技公司工作好不好
互联网科技大奖都有哪些公司
工业互联网等科技实现智能化赋能
世界互联网领先科技成果获奖
小米互联网科技园入驻
风投北京互联网科技
萌小萌互联网科技河南有限公司
互联网对科技影响
互联网大会出现的黑科技
武汉亿视互联网科技有限公司
互联网科技企业
科技互联网企业
腾讯阿里互联网科技
善班互联网科技
互联网科技的未来发展
青海省互联网新科技
互联网和高科技公司
苏州铭阳互联网科技有限公司
深圳育鹏互联网科技有限公司招聘
区块链结合互联网科技