设为首页 收藏本站
查看: 1076|回复: 0

[经验分享] socket编程(实现简单的client与server相互通信)

[复制链接]

尚未签到

发表于 2018-10-22 13:27:22 | 显示全部楼层 |阅读模式
  最近发现基础忘得差不多了,特来温故一下socket编程
  client端:
  1、初始化socket:
  SOCKET Client_st = socket(AF_INET, SOCK_STREAM, 0);    //AF_INET表示internet协议,SOCK_STREAM表示TCP协议(UDP协议:SOCK_DGRAM(好久没看,不知道写错了没))
  2、创建一个SOCKADDR_IN:
  SOCKADDR_IN addrSrv;
  addrSrv.sin_family = AF_INET;
  addrSrv.sin_port = htons(6000);
  addrSrv.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");//服务器端的IP地址(127.0.0.1表示本机)
  3、连接服务端:

  connet(Client_st, (SOCKET_ADDR *)&addrSrv,>  4、向服务器发送消息/接收来自服务器的消息:
  send(Client_st, sendBuf, strlen(sendBuf) + 1, 0);    //这里的第三个参数一般用strlen(sendBuf) + 1(网络上的传输,所以不用sizeof,要尽量节省啊~)
  recv(Client_st, recvBuf, 256, 0)    //这里接收消息的长度就不用斤斤计较了
  5、最后一步,关闭socket
  closesocket(Client_st);
  server端:其实服务端和客户端大致流程相同,只是服务端多了几个步骤
  1、初始化socket:
  SOCKET server_st = socket(AF_INET, SOCK_STREAM, 0);    //AF_INET表示internet协议,SOCK_STREAM表示TCP协议(UDP协议:SOCK_DGRAM(好久没看,不知道写错了没))
  2、创建一个SOCKADDR_IN:
  SOCKADDR_IN addrSrv;
  addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//转换Unsigned long型为网络字节序格
  addrSrv.sin_family = AF_INET;//指定地址簇
  addrSrv.sin_port = htons(6000);
  3、将套接字绑定到一个端口号和本地地址上(如果缺失了这一步,会出现一个不必现的问题,试试吧)

  bind(socSrv, (SOCKADDR*)&addrSrv,>  4、开始监听
  listen(socSrv, 5);    //第二个参数表示同时监听的最大客户端数量
  5、创建并初始化接收客户端的socket
  SOCKET sockConn ;
  SOCKADDR_IN addrClient;//字义用来接收客户端Socket的结构体

  int len =>  memset((void *)&addrClient,0,sizeof(addrClient));
  sockConn = accept(socSrv, (SOCKADDR*)&addrClient, &len);
  (这里我以前迷糊了好久,开始不是已经创建了一个socket了吗?怎么又创建一个socket?这第二个socket才是用于接收客户端的socket)
  6、发送/接收数据
  send(sockConn, sendBuf, strlen(sendBuf)+1, 0);//多发送一个字节
  recv(sockConn, recvBuf, 100, 0);
  7、关闭socket
  closesocket(sockConn);
  closesocket(socSrv);
  传上windows下的客户端与服务端程序:


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-625043-1-1.html 上篇帖子: sql注入在线检测(sqlmapapi) 下篇帖子: Zabbix Server端配置文件说明(留存备用)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表