当前位置: 首页 > news >正文

网站主机和空间智能手表网站

网站主机和空间,智能手表网站,做网络推网站推广的目的,温州seo顾问前面文章,介绍了一个简单socket通讯Demo, 客户端和服务器进行简单的交互。两个代码都很简单,如果情况一复杂,就会出错。这节我们把代码完善一下,实现一个客户端输入,发送,服务器echo的交互。本文…

前面文章,介绍了一个简单socket通讯Demo, 客户端和服务器进行简单的交互。两个代码都很简单,如果情况一复杂,就会出错。这节我们把代码完善一下,实现一个客户端输入,发送,服务器echo的交互。本文介绍客户端代码修改。

客户端其他函数修改同服务器端,可以看上一篇文章。

当服务器启动需要时间时, connect可能需要等待:

    int i = 60; //timeout, 60s.while (i){if (connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)) == 0){break;}else{Sleep(1000);    //1s.--i;}}if (i == 0){std::cout << "connect error." << std::endl;closesocket(sock);sock = INVALID_SOCKET;return;}

这里等1分钟,如果服务器还是没起来,就退出了。

客户端的整个代码如下:

#include <iostream>
#include <WinSock2.h>
#include <WS2tcpip.h>
#include <string>
#pragma comment(lib, "ws2_32.lib")#define SOCKET_ADDR "127.0.0.1"
#define SOCKET_PORT 1234void runSocketClient()
{SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);if (sock == INVALID_SOCKET){std::cout << "socket error." << std::endl;return;}struct sockaddr_in sockAddr;sockAddr.sin_family = PF_INET;inet_pton(AF_INET, SOCKET_ADDR, &sockAddr.sin_addr.s_addr);sockAddr.sin_port = htons(SOCKET_PORT);int i = 60; //timeout, 60s.while (i){if (connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)) == 0){break;}else{Sleep(1000);    //1s.--i;}}if (i == 0){std::cout << "connect error." << std::endl;closesocket(sock);sock = INVALID_SOCKET;return;}int ret = 0;char szBuffer[MAXBYTE] = { 0 };ret = recv(sock, szBuffer, MAXBYTE, NULL);if (ret == 0){std::cout << "recv == 0." << std::endl;closesocket(sock);sock = INVALID_SOCKET;return;}else{std::cout << szBuffer << std::endl;}while (1){memset(szBuffer, 0, MAXBYTE);std::string line;std::getline(std::cin, line);if (line.size() > MAXBYTE-1) {line = line.substr(0, MAXBYTE-1);}strncpy_s(szBuffer, line.c_str(), MAXBYTE);if (strncmp(szBuffer, "exit", MAXBYTE) == 0){break;}ret = send(sock, szBuffer, strlen(szBuffer) + sizeof(char), NULL);if (ret != strlen(szBuffer) + sizeof(char)){std::cout << "send error." << std::endl;continue;}else{std::cout << "send:" << szBuffer << std::endl;}memset(szBuffer, 0, MAXBYTE);ret = recv(sock, szBuffer, MAXBYTE, NULL);if (ret == 0){std::cout << "recv == 0." << std::endl;closesocket(sock);sock = INVALID_SOCKET;break;}else{std::cout << "recv:" << szBuffer << std::endl;}}if (sock != INVALID_SOCKET){closesocket(sock);sock = INVALID_SOCKET;}
}int main()
{WSADATA wsaData;WSAStartup(MAKEWORD(2, 2), &wsaData);runSocketClient();WSACleanup();return 0;
}

客户端测试:

connected.
hello
send:hello
recv:hello
123456
send:123456
recv:123456
exit

http://www.yayakq.cn/news/620825/

相关文章:

  • 中国临海门户网站工程建设三站一体网站制作
  • 如何查网站是那家做的做进化树的在线网站
  • 网站架设 数据库选用建设银行官方网站首页个人登录
  • 网站推广找网站开发费计入什么科目合适
  • seo一个空间建多个网站软件开发主要几个步骤
  • 营销型网站怎么收费标准手机兼职平台网站开发
  • 做网站的公司主要做shm志丹网站建设
  • 做网站哪个公司比较好什么样的公司愿意做网站
  • rss 网站插件电影网站开发api
  • 生成图标网站中国菲律宾商会
  • 青岛网站设计哪家便宜青岛个人接网站建设
  • wordpress数据量大网站访问网站建设亿玛酷信赖
  • 网络建设服务与网站运营推广狗和人做网站
  • 建设一个网站得多少钱手机网站有哪些
  • 一个新网站要怎么做seo如何取消wordpress页脚
  • 梁山网站开发个人做网站需要学什么只是
  • 视频广告网站wordpress幻灯片
  • 怎样做返利网站网盘网页版登录入口
  • 广告网站留电话下列关于网站开发网页上传
  • 中国建设银行网站企业登陆网站seo查询工具
  • wordpress全站企业网站开发需要
  • 长春网站设计制作推广方案设计
  • 佛山技术支持 禅城企业网站网站模板 html
  • 网站建设设计公司响应式网页怎么设计
  • 西安房地产网站建设做网站推广需要哪些知识
  • 江西省城乡住房建设部网站怎么设计门户网站
  • 蓟县网站建设asp网站开发的开发环境
  • 宁乡网站建设uuv9深圳网站制作建设公司推荐
  • 电商网站开发团队wordpress口腔
  • 枣强网站建设代理wordpress新建导航