c语言socket编程流程,C语言socket编程简单步骤「建议收藏」

c语言socket编程流程,C语言socket编程简单步骤「建议收藏」服务器端/***************************************函数功能:创建套接字的函数*输入参数:无*输出参数:无*返回值:套接字的ID*/intcreat_socket(){intret;ret=socket(AF_INET,SOCK_STREAM,0);if(ret==-1){perror(“socketerror”);exit(1);}printf(“创建s…

大家好,又见面了,我是你们的朋友全栈君。

服务器端

/**************************************

*函数功能:创建套接字的函数

*输入参数:无

*输出参数:无

*返回值:套接字的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”);

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/158498.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 如何成为大数据架构师_业务架构师和数据架构师

    如何成为大数据架构师_业务架构师和数据架构师要想成为架构师这几点你必须关注!架构不是一个职业而是一种能力,每一种架构师只不过是在不同的领域里面使用不同的技术,没有什么可对比,就好比如你问一个篮球明星和一个足球明星有什么区别一样!01架构师需要考虑四个问题1.确定系统干什么不干什么,也就是说系统的边界在哪里?2.确定架构内部的模块与模块之间的关系,以及模块与外部之间的关系是什么?3.架构确定以后,有能力去指导…

  • mysql的驱动jar包下载

    mysql的驱动jar包下载jar包链接

  • app怎么修改服务器IP地址,怎么修改手机服务器ip地址

    app怎么修改服务器IP地址,怎么修改手机服务器ip地址怎么修改手机服务器ip地址内容精选换一换如果私钥文件丢失了,可以为服务器替换新的密钥对,并使用新的私钥文件连接云手机。以下为替换服务器密钥对的操作指导,请提前在云服务器控制台创建密钥对,并将密钥对对应的私钥文件下载至本地。登录管理控制台。在服务列表页,选择“计算>云手机CPH”。进入云手机页面。进入云手机页面。单击左侧导航栏的“服务器管理”。选择需要修改密钥对的服务器,在本文主要介绍…

  • VM15pro安装MacOS10.15.1系统(超详细,可用)[通俗易懂]

    VM15pro安装MacOS10.15.1系统(超详细,可用)[通俗易懂]前段时间去开发了款app需要用到打包,Android打包就不说了那个不涉及到环境,但是ipa打包就烦了,还要在mac的环境中去打包,但是作为一个底层程序员为了一个打包去买一个macpro就有点亏了,………

  • 数值分析(一) 牛顿插值法及matlab代码

    数值分析(一) 牛顿插值法及matlab代码目录数学:数值分析一、牛顿插值法原理1.牛顿插值多项式2.差商2.1定义2.2性质2.3差商表3.牛顿(Newton)插值公式二、牛顿插值公式matlab代码1.matlab实时在线脚本2.牛顿插值代码3.实例三、总结数学:数值分析  刚上完数值分析课在其中学习了不少的知识,课后还做了一些课程实验主要都是利用matlab编程来解决问题,接下先讲插值法中的牛顿插值法一、牛顿插值法原理1.牛顿插值多项式  定义牛顿插值多项式为:Nn(x)=a0+a1(x−x0)+a2(x−x0)(x−

  • CentOS7 network.service loaded failed 处理技巧

    CentOS7 network.service loaded failed 处理技巧

    2021年10月18日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号