网络通信,C/S模型(Client and Server)


工具:

C++工具: Clion
Python工具: Pycharm
g++: MingW
Python版本: python3.5


Python开发

Python开发会比较简单。下面的代码直接复制就可以看到了

from socket import *
from time import ctimeHOST = '127.0.0.1'
POST = 75
BUFSIZ = 1024
ADDR = (HOST, POST)tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)while True:data = tcpCliSock.recv(BUFSIZ)if not data:breakprint("[%s]: %s" % (ctime(), data.decode()))

下面,我绑定的的是本地的75号端口。这个端口的服务将有C++(下面的代码实现)。

python的比较简单,直接将上面的代码copy,然后就可以直接运行了。

C++开发

这个稍微复杂点,但其实也比较简单。
第一步,需要链接库: winsock2.h

  • 具体方法其实很简单,在CmakeLists.txt中添加一些东西就好了。

写上这句话

if(WIN32)target_link_libraries(Test wsock32 ws2_32)
endif()

第二步,就是敲代码了….

#include <winsock2.h>
#include <iostream>
using namespace std;
//#pragma comment(lib, 'WS2_32.lib')int main() {WSADATA data;WORD w = MAKEWORD(2, 0);char sztext[] = "Welcome";::WSAStartup(w, &data); // 初始化套接字库SOCKET s, s1;s = ::socket(AF_INET, SOCK_STREAM, 0); // 创建套接字sockaddr_in addr, addr2;int n = sizeof(addr2);addr.sin_family = AF_INET; // 初始化地址结构addr.sin_port = htons(75);addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");::bind(s, (sockaddr *) &addr, sizeof(addr));::listen(s, 5);cout << "Serve Running~\n";while (true) {s1 = ::accept(s, (sockaddr *) &addr2, &n);if (s1 != NULL) {cout << inet_ntoa(addr2.sin_addr) << " connected!\r\n";::send(s1, sztext, sizeof(sztext), 0); // 向客户端发送字符数}::closesocket(s);::closesocket(s1);::WSACleanup();return 0;}
}

将上面的代码拷贝一份就好了。可以直接运行的~
一些专有的函数,前面用了::,在名空间中寻找对应的函数(估计是跟动态链接库有关)

然后,这个代码其实功能非常简单,就是实现了一次链接,并且发个信息。

后记

最后,补充一点,传输数据的时候,在Python端接受信息的时候,很奇怪的是,会多一个什么奇怪的结尾。这个问题没有解决。还是很迷惑的!

【Clion+Pycharm 网络编程】C++实现服务端,Python实现客户端相关推荐

  1. TCP/IP网络编程之多进程服务端(一)

    TCP/IP网络编程之多进程服务端(一) 进程概念及应用 我们知道,监听套接字会有一个等待队列,里面存放着不同客户端的连接请求,如果有一百个客户端,每个客户端的请求处理是0.5s,第一个客户端当然不会 ...

  2. TCP/IP网络编程之多进程服务端(二)

    TCP/IP网络编程之多进程服务端(二) 信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非 ...

  3. Python tcp编程,TCP服务端和TCP客户端代码编写

    Python网络编程 两种模式: 一种tcp可靠连接,能够保证数据不丢失 一种udp 不关心数据是否会丢失,在乎传输效率 TCP编程 一点:服务端 二点:客户端 客户端如何连接服务端,保证传输的数据可 ...

  4. python交互式编程客户端_【python】UDP网络编程:实现服务端与客户端的交互、简单的AI智能模式...

    关于UDP网络编程 UDP(user datagram protocol)的中文叫用户数据报协议,属于传输层.UDP是面向非连接的协议,它不与对方建立连接,而是直接把要发的数据发给对方. [UDP网络 ...

  5. C++网络编程学习:服务端多线程分离业务处理高负载

    网络编程学习记录 使用的语言为C/C++ 源码支持的平台为:Windows / Linux 笔记一:建立基础TCP服务端/客户端  点我跳转 笔记二:网络数据报文的收发  点我跳转 笔记三:升级为se ...

  6. 网络云盘项目——服务端部署、客户端部署、演示运行效果

    一.前言 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部署. ...

  7. python网络编程讲解_详解Python Socket网络编程

    Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...

  8. Java之初步识别网络编程:IP、端口号、TCP/UDP、Socket、URL等

    文章目录 一.网络编程概述 二.网络通信要素概述 三.通信要素1:IP和端口号 IP相关 InetAdress类 如何实例化InetAddress 端口号 四.通信要素2:网络协议 TCP/IP协议簇 ...

  9. 网络聊天室_TCP服务端

    初学Python记录点滴生活_1 ps:正经人谁写日记? 网络聊天室_TCP服务端 具体实现步骤 1.编写一个TCP服务端程序,循环等待接受客户端的连接请求 2.当客户端和服务端建立连接成功,创建子线 ...

最新文章

  1. Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
  2. python【Matlibplot绘图库】利用matlibplot绘制雷达图
  3. mysql 视图 临时表模式
  4. Winform中实现将照片剪贴到系统剪切板中(附代码下载)
  5. (~解题报告~)L1-016 查验身份证 (15分)(29行代码AC!)
  6. 关于visual studio类视图和资源视图不显示类和资源的问题
  7. 【ArcGIS遇上Python】ArcGIS Python按照指定字段批量筛选不同类型的图斑(以土地利用数据为例)
  8. python3 slice
  9. OSi七成模型 tcp/ip网络模型
  10. GAN能生成3D图像啦!朱俊彦团队公布最新研究成果
  11. iOS Your account already has a valid ios Distribution certificate
  12. 现代软件工程 第一周博客作业
  13. RedHat7 安装 MySQL 5.7
  14. 公民个人信息保护方案汇总
  15. errMsg: “checkJsApi:ok“
  16. FCP-报表交付工程师考试经验
  17. 被告知孩子学校偷钱后
  18. 收发器(Transceiver)架构5——发信机2
  19. 2021高考成绩查询怎么查小分,2021微信哪个小程序可以查成绩 高考成绩怎么查
  20. HashMap结构图及特点

热门文章

  1. 使用Silverlight for Embedded开发绚丽的界面(2)
  2. 手动启动 oracle 服务
  3. WPF 3D中多个模型如何设置某一个在最前?
  4. api 和 C# 里的接口的区别?
  5. 用系统某一用户的的身份运行某一命令
  6. MATLAB - 为什么imshow(g,[])可以正常显示,而imshow(g)却显示空白图像?
  7. SDN,这一年都经历了什么
  8. 《C和指针》读书笔记 第5章-操作符和表达式
  9. python处理时间加减
  10. Exchange DAG备份恢复(六)---通过Windows Server Backup对单个邮箱进行恢复