开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1571|回复: 3
收起左侧

[源码分享] socket 简单例子

[复制链接]

结帖率:63% (5/8)
发表于 2013-8-3 14:31:22 | 显示全部楼层 |阅读模式   江西省九江市
  1. Client端:
  2. HSocketClientMain.h
  3. #ifndef _H_SocketClientMain
  4. #define _H_SocketClientMain
  5. #include <WINSOCK2.H>
  6. #pragma comment(lib,"ws2_32.lib")
  7. #include <iostream>
  8. #include <string>
  9. using namespace std;
  10. #endif
  11. Main.cpp
  12. #include "HSocketClientMain.h"

  13. int main()
  14. {
  15.         int err;
  16.         WORD versionRequired;
  17.         WSADATA wsaData;
  18.         versionRequired=MAKEWORD(1,1);
  19.         err=WSAStartup(versionRequired,&wsaData);//协议库的版本信息
  20.         if (err)
  21.         {
  22.                 printf("客户端的嵌套字打开失败!\n");
  23.                 return 1;//结束
  24.         }
  25.         else
  26.                 printf("客户端的已打开套接字\n");

  27.         SOCKET clientSocket=socket(AF_INET,SOCK_STREAM,0);
  28.         SOCKADDR_IN clientsock_in;
  29.         clientsock_in.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
  30.         clientsock_in.sin_family=AF_INET;
  31.         clientsock_in.sin_port=htons(6000);

  32.         if (0!=connect(clientSocket,(SOCKADDR*)&clientsock_in,sizeof(SOCKADDR)))//开始连接
  33.         {
  34.                 printf("connection fail!\n");
  35.                 return 1;
  36.         }

  37.         char firstReceiveBuf[100];
  38.         recv(clientSocket,firstReceiveBuf,101,0);
  39.         printf("%s\n",firstReceiveBuf);

  40.         while (1)
  41.         {
  42.                 string input;
  43.                 cin>>input;
  44.                 send(clientSocket,input.c_str(),input.length()+1,0);
  45.                 char receiveBuf[100];
  46.                 recv(clientSocket,receiveBuf,101,0);
  47.                 printf("%s\n",receiveBuf);
  48.         }
  49.         closesocket(clientSocket);
  50.         WSACleanup();
  51.         return 0;
  52. }
  53. Server端:
  54. HSocketServerMain.h
  55. #ifndef _H_SocketServerMain
  56. #define _H_SocketServerMain
  57. #include <WINSOCK2.H>
  58. #pragma comment(lib,"ws2_32.lib")
  59. #include <iostream>
  60. #include <string>
  61. using namespace std;
  62. #endif
  63. Main.cpp
  64. #include "HSocketServerMain.h"
  65. int main()
  66. {
  67.         //创建套接字
  68.         WORD myVersionRequest;
  69.         WSADATA wsaData;
  70.         myVersionRequest=MAKEWORD(1,1);
  71.         int err;
  72.         err=WSAStartup(myVersionRequest,&wsaData);
  73.         if (!err)
  74.         {
  75.                 printf("已打开套接字\n");
  76.         }
  77.         else
  78.         {
  79.                 //进一步绑定套接字
  80.                 printf("嵌套字未打开!");
  81.                 return 1;
  82.         }

  83.         SOCKET serSocket=socket(AF_INET,SOCK_STREAM,0);//创建了可识别套接字
  84.         //需要绑定的参数
  85.         SOCKADDR_IN addr;
  86.         addr.sin_family=AF_INET; //地址簇
  87.         addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址
  88.         addr.sin_port=htons(6000);//绑定端口

  89.         bind(serSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//绑定完成
  90.         listen(serSocket,5);//其中第二个参数代表能够接收的最多的连接数

  91.         //////////////////////////////////////////////////////////////////////////
  92.         //开始进行监听
  93.         //////////////////////////////////////////////////////////////////////////
  94.         SOCKADDR_IN clientsocket;
  95.         int len=sizeof(SOCKADDR);
  96.         SOCKET serConn=accept(serSocket,(SOCKADDR*)&clientsocket,&len);

  97.         char firstConn[100];
  98.         sprintf(firstConn,"welcome %s to here!",inet_ntoa(clientsocket.sin_addr));//找对对应的IP并且将这行字打印到那里
  99.         send(serConn,firstConn,strlen(firstConn)+1,0);

  100.         while (1)
  101.         {
  102.                 char receiveBuf[100];//接收
  103.                 int i=recv(serConn,receiveBuf,strlen(receiveBuf)+1,0);
  104.                 if (i>0)
  105.                 {
  106.                         printf("%s\n",receiveBuf);

  107.                         char sendBuf[100];
  108.                         sprintf(sendBuf,"server get your message is %s",receiveBuf);//找对对应的IP并且将这行字打印到那里
  109.                         send(serConn,sendBuf,strlen(sendBuf)+1,0);
  110.                 }
  111.         }

  112.         closesocket(serConn);//关闭
  113.         WSACleanup();
  114.         return 0;
  115. }
复制代码
发表于 2014-3-12 14:42:40 | 显示全部楼层   广东省深圳市
重新认识了
回复 支持 反对

使用道具 举报

结帖率:91% (48/53)

签到天数: 3 天

发表于 2013-10-24 09:08:22 | 显示全部楼层   江西省萍乡市

多谢楼主分享哟
回复 支持 反对

使用道具 举报

结帖率:57% (13/23)
发表于 2013-8-3 14:33:20 | 显示全部楼层   广东省惠州市
职业抢沙发,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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