c语言socket编程流程,C语言socket编程简单步骤「建议收藏」
大家好,又见面了,我是你们的朋友全栈君。
服务器端
/**************************************
*函数功能:创建套接字的函数
*输入参数:无
*输出参数:无
*返回值:套接字的ID
*/
int creat_socket()
{
int ret;
ret=socket(AF_INET,SOCK_STREAM,0);
if(ret==-1)
{
perror(“socket error”);
exit(1);
}
printf(“创建socket成功\n”);
return ret;
}
/**************************************
*函数功能:绑定本地IP和端口号到socket
*输入参数:套接字ID,网际套接字地址结构体,端口号
*输出参数:无
*返回值:无
*/
void bind_socket(int socketid,struct sockaddr_in server_addr,int port)
{
int ret;
memset(&server_addr,0,sizeof(struct sockaddr_in));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons((short)port);
//连接请求使用一个特殊的地址
server_addr.sin_addr.s_addr=INADDR_ANY;
//绑定本地地址和端口号,参数二强转成通用类型
ret=bind(socketid,(struct sockaddr *)&server_addr,sizeof(server_addr));
if(ret<0)
{
perror(“bind error”);
exit(1);
}
printf(“bind success….\n”);
}
/**************************************
*函数功能:监听套接字
*输入参数:套接字ID
*输出参数:无
*返回值:无
*/
void listen_socket(int socketid)
{
int ret;
ret=listen(socketid,ONLINE_MAX);//启动监听
if(ret==-1)
{
perror(“listen error”);
exit(1);
}
printf(“listening success….\n”);
//通过accept接收客户端连接
}
/**************************************
*函数功能:接收客户端的套接字连结
*输入参数:套接字ID,网际套接字地址结构体
*输出参数:无
*返回值:连结的套接字ID
*/
int accept_socket(int socketid,struct sockaddr_in client_addr)
{
int ret;
int len;
len=sizeof(client_addr);
ret=accept(socketid,(struct sockaddr *)&client_addr,&len);
if(ret==-1)
{
perror(“accept error”);
exit(1);
}
printf(“accept success….\n”);
return ret;
}
客户端:
/**************************************
*函数功能:创建套接字的函数
*输入参数:无
*输出参数:无
*返回值:套接字ID
*/
int creat_socket()
{
int ret;
ret=socket(AF_INET,SOCK_STREAM,0);
if(ret==-1)
{
perror(“socket error”);
exit(1);
}
printf(“创建socket成功\n”);
return ret;
}
/**************************************
*函数功能:连接套接字的函数
*输入参数:套接字ID,网际套接字地址结构体
*输出参数:无
*返回值:无
*/
void connect_socket(int socketid,struct sockaddr_in server_in)
{
int ret;
ret=connect(socketid,(struct sockaddr *)&server_in,sizeof(server_in));
if(ret==-1)
{
perror(“connect error”);
exit(1);
}
printf(“connecting….\n”);
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158498.html原文链接:https://javaforall.cn
相关文章
- spring注解解析流程_深入理解Kafka
- [springboot]springboot启动流程[通俗易懂]
- maven 打的包在哪_maven打包流程学习「建议收藏」
- 建筑建材行业供应链寻源管理:定价全过程流程/数据/文件/人员/风险
- 流程控制-if
- VM系列振弦采集模块启动流程的工作原理
- 3. webpack构建整体流程的组织:webpack -> Compiler -> Compilation
- PTL灯光拣选系统WMS电子标签拣货系统的出入库流程
- Linux Shell基础篇六 - 流程控制
- GitHub 又一黑科技项目诞生,成功复现 ChatGPT 完整流程!
- 【Android 插件化】Hook 插件化框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★
- 【Windows 逆向】使用 CE 工具挖掘关键数据内存真实地址 ( 完整流程演示 | 查找临时内存地址 | 查找真实指针地址 )
- Spark算子执行流程详解之四大数据
- 用C语言构建一个可执行程序的流程
- 玩转Linux下C语言程序编译流程(linuxc程序编译)
- 简单易懂MySQL下载和安装的完美指南(mysql下载及安装流程)