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”);

}

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

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

(0)
上一篇 2022年7月13日 下午1:16
下一篇 2022年7月13日 下午1:36


相关推荐

  • 【Python工具】Pycharm设置字体放大(缩小)快捷键

    【Python工具】Pycharm设置字体放大(缩小)快捷键一 设置放大字体 ctrl 上滚轮 File gt setting gt Keymap gt 在搜寻框中输入 increase gt IncreaseFont 双击 gt 在弹出的对话框中选择 AddMouseShor 在弹出的对话框中同时按住 ctrl 键和鼠标滚轮向上滑 点击 OK 完成设置二 设置缩小字体 Ctrl 向下滚轮将方式一中搜索关键字改为 DecreaseFont 双击 在弹出的对话框中选择 AddMouseShor

    2026年3月20日
    3
  • PowerDesign的使用[通俗易懂]

    PowerDesign的使用[通俗易懂]使用powerdesign

    2022年7月3日
    40
  • java数组详解

    java数组详解1 数组概念同一种类型数据的集合。其实数组就是一个容器。数组的好处可以自动给数组中的元素从0开始编号,方便操作这些元素。格式1:元素类型[] 数组名 = new 元素类型[元素个数或数组长度];示例:int[] arr = new int[5];格式2:

    2022年6月2日
    29
  • 《Cocos2D权威指南》——3.5 CCTexture纹理类「建议收藏」

    《Cocos2D权威指南》——3.5 CCTexture纹理类

    2022年3月5日
    114
  • latex中长公式换行,很好的办法

    latex中长公式换行,很好的办法今天在编辑公式时,有一个公式很长,写到一行就出去了。当时之前换行都是方程组或者在括号完之后换,都没有问题。但是今天我也换行的是在括号中间断开。这样出现问题,编辑的时候会出错误提醒。上网查了一些论坛,也有人和我一样的问题,但是都没有解决方案。自己试了好几种方法,又和办公室的其他人讨论了一下,终于找办法了。比较简单的情况:方程组code:\begin{equation}\b

    2022年5月31日
    58
  • WERTC-在Ubuntu中搭建ICE服务器

    WERTC-在Ubuntu中搭建ICE服务器1.ICE服务器介绍最近一段时间在做关于webrtc语音视频通话,网上免费的公开的STUN服务器可以用于测试,使用起来响应时间非常的慢,用起来不爽。作为一个有情怀的技术人员的我,就需要自己搭建了coturn服务器,现在分享给大家。前提先介绍一下ICE服务器,ICE服务器包含了STUN和TURN两部分,实际上我们就需要TURN服务器就可以进行P2P穿墙。coturn服务器是在turnserver上增加了部分高级特性(感谢项目作者,为我们提供了很好的环境)。coturn支持cp,udp,

    2022年4月30日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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