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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 分享一个二次元动漫视频网站源码「建议收藏」

    分享一个二次元动漫视频网站源码「建议收藏」源码下载地址:下载地址非常大气漂亮的Miko动漫视频网站整站源码,二次元动漫网源码。Dz后台管理方便,整站数据都设置好了,传上即可制作一个完整的动漫网。1.源码上传到空间2.把数据库文件.sql上传到数据库里3.后台域名/admin.php4.账号liujianghao密码miko2016…

    2022年8月23日
    13
  • 100+Python编程题给你练(附答案)

    大家如果能坚持独立思考完成以下题目,一定可以帮大家轻松getPython的编程技能。目前,这个项目已经获得了3994Stars,2952Forks。Github地址:Python-programming-exercises首先,这100+练习题根据难易程度分为三个等级:Level1、2和3。下面对如何定义这三个Level进行了说明,大家可以结合自身的学习能…

    2022年4月4日
    105
  • Vue生命周期钩子(三)「建议收藏」

    Vue生命周期钩子(三)「建议收藏」Vue生命周期图Vue中共有11个生命周期函数,本文只说明8个生命周期钩子beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好data和methods属性created:实例已经在内存中创建完毕,此时 data 和 methods 已经创建完毕,此时还没有开始编译模板beforeMount:此时已经完成了模板的编译,但是还没有挂载到页面中…

    2022年6月13日
    27
  • 异常处理

    错误和异常在编写程序的过程中程序出错是不可避免的;而这些错误可以分为俩种语法错误这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正逻辑错误异常异常是由于在执行程序的

    2022年3月29日
    43
  • export添加环境变量不生效_如何添加环境变量里面的路径

    export添加环境变量不生效_如何添加环境变量里面的路径export命令功能说明:设置或显示环境变量。语  法:export[-fnp][变量名称]=[变量设置值]补充说明:在shell中执行程序时,shell会提供一组环境变量。export可新增,修改或删除环境变量,供后续执行的程序使用。export的效力仅及于该此登陆操作。参  数:   -f 代表[变量名称]中为函数名称。 -n 删除指定的变量。变量实际上…

    2022年9月6日
    4
  • -xms -xmx(information value)

    前提:找到你的studio64.exe.vmoptions(64位操作系统为例)文件根据需要修改其中的配置如图所示:注:在sun的jdk下,Xms和Xmx设置一样,可以减轻伸缩堆大小带来的压力,但在ibm的jdk下面,设置为一样会增大堆碎片产生的几率,并且这种负面影响足以抵消前者产生的益处 下面介绍JVM调优的参数的含义堆大小设置 JVM中最大堆大小有三方面限制:相关操…

    2022年4月16日
    46

发表回复

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

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