【Clion+Pycharm 网络编程】C++实现服务端,Python实现客户端
网络通信,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实现客户端相关推荐
- TCP/IP网络编程之多进程服务端(一)
TCP/IP网络编程之多进程服务端(一) 进程概念及应用 我们知道,监听套接字会有一个等待队列,里面存放着不同客户端的连接请求,如果有一百个客户端,每个客户端的请求处理是0.5s,第一个客户端当然不会 ...
- TCP/IP网络编程之多进程服务端(二)
TCP/IP网络编程之多进程服务端(二) 信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非 ...
- Python tcp编程,TCP服务端和TCP客户端代码编写
Python网络编程 两种模式: 一种tcp可靠连接,能够保证数据不丢失 一种udp 不关心数据是否会丢失,在乎传输效率 TCP编程 一点:服务端 二点:客户端 客户端如何连接服务端,保证传输的数据可 ...
- python交互式编程客户端_【python】UDP网络编程:实现服务端与客户端的交互、简单的AI智能模式...
关于UDP网络编程 UDP(user datagram protocol)的中文叫用户数据报协议,属于传输层.UDP是面向非连接的协议,它不与对方建立连接,而是直接把要发的数据发给对方. [UDP网络 ...
- C++网络编程学习:服务端多线程分离业务处理高负载
网络编程学习记录 使用的语言为C/C++ 源码支持的平台为:Windows / Linux 笔记一:建立基础TCP服务端/客户端 点我跳转 笔记二:网络数据报文的收发 点我跳转 笔记三:升级为se ...
- 网络云盘项目——服务端部署、客户端部署、演示运行效果
一.前言 本项目分为6篇博客文章完成: 1.项目总体介绍:https://blog.csdn.net/qq_41453285/article/details/107871393. 2.Redis部署. ...
- python网络编程讲解_详解Python Socket网络编程
Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ...
- Java之初步识别网络编程:IP、端口号、TCP/UDP、Socket、URL等
文章目录 一.网络编程概述 二.网络通信要素概述 三.通信要素1:IP和端口号 IP相关 InetAdress类 如何实例化InetAddress 端口号 四.通信要素2:网络协议 TCP/IP协议簇 ...
- 网络聊天室_TCP服务端
初学Python记录点滴生活_1 ps:正经人谁写日记? 网络聊天室_TCP服务端 具体实现步骤 1.编写一个TCP服务端程序,循环等待接受客户端的连接请求 2.当客户端和服务端建立连接成功,创建子线 ...
最新文章
- Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
- python【Matlibplot绘图库】利用matlibplot绘制雷达图
- mysql 视图 临时表模式
- Winform中实现将照片剪贴到系统剪切板中(附代码下载)
- (~解题报告~)L1-016 查验身份证 (15分)(29行代码AC!)
- 关于visual studio类视图和资源视图不显示类和资源的问题
- 【ArcGIS遇上Python】ArcGIS Python按照指定字段批量筛选不同类型的图斑(以土地利用数据为例)
- python3 slice
- OSi七成模型 tcp/ip网络模型
- GAN能生成3D图像啦!朱俊彦团队公布最新研究成果
- iOS Your account already has a valid ios Distribution certificate
- 现代软件工程 第一周博客作业
- RedHat7 安装 MySQL 5.7
- 公民个人信息保护方案汇总
- errMsg: “checkJsApi:ok“
- FCP-报表交付工程师考试经验
- 被告知孩子学校偷钱后
- 收发器(Transceiver)架构5——发信机2
- 2021高考成绩查询怎么查小分,2021微信哪个小程序可以查成绩 高考成绩怎么查
- HashMap结构图及特点
热门文章
- 使用Silverlight for Embedded开发绚丽的界面(2)
- 手动启动 oracle 服务
- WPF 3D中多个模型如何设置某一个在最前?
- api 和 C# 里的接口的区别?
- 用系统某一用户的的身份运行某一命令
- MATLAB - 为什么imshow(g,[])可以正常显示,而imshow(g)却显示空白图像?
- SDN,这一年都经历了什么
- 《C和指针》读书笔记 第5章-操作符和表达式
- python处理时间加减
- Exchange DAG备份恢复(六)---通过Windows Server Backup对单个邮箱进行恢复