FTP 编写 2:客户端与服务端的连接


    首先编写客户端与服务端能进行简单的连接,这个较为容易:

    服务端的编写流程是:启动 Winsock、建立套接字、绑定套接字、监听、接收连接、关闭连接、关闭套接字、关闭 Winsock

    客户端的编写流程是:启动 Winsock、建立套接字、连接、关闭连接和套接字、关闭 Winsock

    代码较为简单,具体如下:

服务端

#include <Winsock2.h>
#include <Ws2tcpip.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")void main()
{//定义相关的数据int iPort = 5050;//定义其端口WSADATA wsaData;//Winsock 的启动参数SOCKET sListen, sAccept;//套接口关键字,分别用于监听和接收连接int iLen;int iSend;char buf[] = "I am a server";struct sockaddr_in ser, cli;//网络地址std::cout << "----------------------------\n";std::cout << "Server waitting\n";std::cout << "----------------------------\n";//启动winSocketif (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {std::cout << "Failed to load Winsock.\n";return;}//创建SocketsListen = socket(AF_INET, SOCK_STREAM, 0);if (sListen == INVALID_SOCKET) {std::cout << "socket() Failed:" << WSAGetLastError() <<"\n";return;}//绑定IP地址ser.sin_family = AF_INET;ser.sin_port = htons(iPort);ser.sin_addr.s_addr = htonl(INADDR_ANY);if (bind(sListen, (LPSOCKADDR)&ser, sizeof(ser)) == SOCKET_ERROR) {std::cout << "bind() Failed\n";return;}//监听if (listen(sListen, 5) == SOCKET_ERROR) {std::cout << "listen() Failed\n";return;}iLen = sizeof(cli);//获取客户端网络地址的长度//接受连接和发送欢迎信息//用循环使程序一直运行while (true) {//接收连接sAccept = accept(sListen, (struct sockaddr*)&cli, &iLen);if (sAccept == INVALID_SOCKET) {std::cout << "accept() Failed\n";break;}//显示客户端的 IP 信息char clibuf[20] = { '\0' };inet_ntop(AF_INET, (void*)&cli.sin_addr, clibuf, 16);std::cout << "Accept client IP:" << clibuf << ":" << ntohs(cli.sin_port) << std::endl;//发送信息给客户端iSend = send(sAccept, buf, sizeof(buf), 0);if (iSend == SOCKET_ERROR) {std::cout << "send() Failed\n";break;}else if (iSend == 0) {break;}else {std::cout << "Send byte:" << iSend << std::endl;std::cout << "----------------------------------\n";}//关闭连接closesocket(sAccept);}//关闭监听closesocket(sListen);//关闭 WinsockWSACleanup();
}

客户端

#include <Winsock2.h>
#include <WS2tcpip.h>
#include <iostream>
#pragma comment(lib,"ws2_32.lib")void main()
{//定义相应的数据WSADATA wsaData;SOCKET sClient;int iPort = 5050;//对应的服务端的端口int iLen;char buf[1024];struct sockaddr_in ser;//启动 winSocketmemset(buf, 0, sizeof(buf));if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {std::cout << "Failed to load Winsock\n";system("pause");return;}char addr[20] = { '\0' };std::cin >> addr;//输入服务端 IP 地址//创建Socketser.sin_family = AF_INET;ser.sin_port = htons(iPort);inet_pton(AF_INET, addr, (void*)&ser.sin_addr.s_addr);sClient = socket(AF_INET, SOCK_STREAM, 0);if (sClient == INVALID_SOCKET) {std::cout << "socket() Failed\n";system("pause");return;}//连接并进行简单的操作if (connect(sClient, (struct sockaddr*)&ser, sizeof(ser)) == INVALID_SOCKET) {std::cout << "connect() Failed\n";system("pause");return;}else {//接收服务端发送的数据iLen = recv(sClient, buf, sizeof(buf), 0);if (iLen == 0) {system("pause");return;}else if (iLen == SOCKET_ERROR) {std::cout << "recv() Failed\n";system("pause");return;}std::cout << "recv() data from server:" << buf << std::endl;}//关闭连接并退出closesocket(sClient);//关闭 WinsockWSACleanup();system("pause");
}

启动运行

    需要注意的是在客户端输入的 IP 地址,这个地址需要输入本地电脑的 IP 地址,使用 cmd 调出 Windows 的 DOS 界面,输入 ipconfig 命令,找到 IPv4 地址,然后在 客户端进行填写即可

FTP 编写 2:客户端与服务端的连接相关推荐

  1. twisted:基于python的twisted框架编写一个客户端和服务端的对话聊天空间

    twisted:基于python的twisted框架编写一个客户端和服务端的对话聊天空间 目录 输出结果 实现代码 输出结果 更新-- 实现代码 #基于python的twisted框架编写一个简单的聊 ...

  2. 2. ZK客户端与服务端建立连接的过程(基于NIO)

    ZK客户端与服务端建立连接的过程 引例 1. 启动SendThread 2. 状态初始化 3. 开始连接 4. 处理服务端连接响应 5. 流程图 在上一篇<客户端启动源码分析>文章中讲到了 ...

  3. 客户端与服务端长连接的几种方式

    客户端与服务端长连接的几种方式 前言 一.ajax 轮询 二.long poll 长轮询 三.iframe 长连接 四.WebSocket 前言 在日常 Web 项目中,通常使用的是短连接.即一个 R ...

  4. spring整合cxf,轻松编写webService客户端、服务端

    WebService是一种跨编程语言.跨操作系统平台的远程调用技术,广泛应用在实际开发,接口实现,系统集成. 服务端 List item 添加maven依赖 项目中除了spring相关的依赖以外,还需 ...

  5. SVN客户端和服务端的连接

    1. 当我们在某个文件夹中右键鼠标--SVN Checkout时,界面如下: 其中: 1)URL of repository是仓库地址, 仓库地址要怎么填写呢? 如果客户端和服务端在同一台电脑上,可以 ...

  6. QT -- TcpSocket实例,使用Qt中的tcp通信协议,构建客户端和服务端,实现局域网通信软件功能

    Qt中使用Tcp构建通信客户端实现聊天信息发送连接等 1.简介 2.项目创建和界面构建 1)流程图 2)项目构建 3)界面构建 3.代码设计 1)项目pro添加 2)客户端设计 a. clientwi ...

  7. ZooKeeper客户端源码(一)——向服务端建立连接+会话建立+心跳保持长连接

    首发CSDN:徐同学呀,原创不易,转载请注明源链接.我是徐同学,用心输出高质量文章,希望对你有所帮助. 一.从ZooKeeper实例初始化开始 ZooKeeper 提供了原生的客户端库,虽然不好用,但 ...

  8. tcp网络编程客户端和服务端及listen和tcp允许最大连接数

    tcp网络编程 tcp网络编程步骤: 由于tcp传输特点是可靠有连接,那么就有 1.客户端向服务端发送连接请求(SYN), 2.服务端接受请求并向客户端发送(SYN+ACK); 3.客户端向服务端回复 ...

  9. java网络编程Socket实现客户端向服务端发送信息

    (可按目录按需阅读,我一般会整理的比较细) 前置知识 java IO Socket 什么是socket?socket字面意思其实就是一个插口或者套接字,包含了源ip地址.源端口.目的ip地址和源端口. ...

最新文章

  1. STM32使用DMA从串口读可变长度数据到内存
  2. 历届试题 买不到的数目
  3. 微信分享链接时,怎样才能带上带缩略图和简介?
  4. 设置背景图片,解决手机上背景图片高度适应问题
  5. 【Vegas原创】恢复Oracle Package的笨方法
  6. LeetCode 1290 二进制链表转整数
  7. 【C++基础】C++11的noexcept声明符 与 异常传播
  8. apt-get、apt、yum、dpkg、rpm
  9. GPUImage – 色阶 GPUImageLevelsFilter
  10. 人工智能python基础知识_AI 人工智能基础知识-习题
  11. python里边的单词都表示什么_Python:只保留字符串中的单词,每个单词都在newlin上...
  12. php中对象(object)与数组(array)之间的相互转换
  13. 除了iframe嵌套还有什么嵌套_嵌套了ROUND函数,为什么还会差1分钱,值得收藏
  14. 产品配件类目税目分类_2018商品和服务税收分类编码表
  15. 2023年东大学机械专硕考研上岸经验分享
  16. php ctype xdigit,PHP ctype_xdigit()用法及代码示例
  17. 系统集成项目管理师 高项论文 项目进度管理
  18. 8.2 向量数量积与向量积(点乘与叉乘)
  19. 用户分层精细化运营-RFM模型-分类模型
  20. 职场中不能做的四件事,这才是情商高的表现!

热门文章

  1. Java的“影子克隆”和“深度克隆”
  2. 校友聊---Sprint计划会议总结
  3. C#根据身份证获出生日期和性别---含C#代码
  4. Graphics 单元中的类
  5. 【白皮书分享】快手私域经营白皮书.pdf(附下载链接)
  6. 【报告分享】转变与机遇:从京东大数据看2020消费市场与品牌成长.pdf(附下载链接)...
  7. 双榜首!华为云擎天架构刷新进化计算大赛新纪录!
  8. Knowledge Distillation | 知识蒸馏经典解读
  9. 建筑与建筑群综合布线系统工程验收规范_如果这9个方面考虑周到 你的综合布线系统工程可以竣工验收了...
  10. 深度学习与神经网络——邱锡鹏