[本文出自天外归云的博客园]

目标:实现客户端与服务端的socket通信,消息传输。

客户端

客户端代码:

from socket import socket,AF_INET,SOCK_STREAM

#服务端的ip地址
server_ip = '127.0.0.1'
#服务端socket绑定的端口号
server_port = 20000 if __name__ == '__main__':
while True:
str_msg = input("请输入要发送信息:")
if str_msg != "":
bytes_msg = bytes(str_msg, encoding = "gbk")
client = socket(AF_INET,SOCK_STREAM)
client.connect((server_ip,server_port))
client.send(bytes_msg)
print(str(client.recv(8192),encoding="gbk"))
client.close()

客户端(Mac系统)运行截图:

服务端

服务端代码:

from socketserver import BaseRequestHandler, TCPServer

#指定接收消息的客户端ip列表
target_clients = ["10.235.0.109"] class EchoHandler(BaseRequestHandler):
def handle(self):
for target_client in target_clients:
if target_client in self.client_address:
print('Got connection from', self.client_address)
msg = self.request.recv(8192)
if not msg:
break
ret_msg = bytes("自动回复:消息已收到!", encoding = "gbk")
self.request.send(ret_msg)
print(str(msg, encoding = "gbk"))
break if __name__ == '__main__':
from threading import Thread
NWORKERS = 16
#绑定socket服务端所在ip和端口号
serv = TCPServer(('', 20000), EchoHandler)
for n in range(NWORKERS):
t = Thread(target=serv.serve_forever)
t.daemon = True
t.start()
serv.serve_forever()

服务端(Windows系统)运行截图,注意要设置cmd活动页代码为936(chcp 936)方可显示中文,设置cmd属性中的字体为点阵字体:

参考资料:Python3-cookbook 11.2 创建TCP服务器

Python socket编程客户端与服务端通信的更多相关文章

  1. Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.

    Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: ​ ​  ​ 专业理解: socket是应用层与TCP/IP ...

  2. Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信

    Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主 ...

  3. 基于开源SuperSocket实现客户端和服务端通信项目实战

    一.课程介绍 本期带给大家分享的是基于SuperSocket的项目实战,阿笨在实际工作中遇到的真实业务场景,请跟随阿笨的视角去如何实现打通B/S与C/S网络通讯,如果您对本期的<基于开源Supe ...

  4. Netty入门之客户端与服务端通信(二)

    Netty入门之客户端与服务端通信(二) 一.简介 在上一篇博文中笔者写了关于Netty入门级的Hello World程序.书接上回,本博文是关于客户端与服务端的通信,感觉也没什么好说的了,直接上代码 ...

  5. netty-3.客户端与服务端通信

    (原) 第三篇,客户端与服务端通信 以下例子逻辑: 如果客户端连上服务端,服务端控制台就显示,XXX个客户端地址连接上线. 第一个客户端连接成功后,客户端控制台不显示信息,再有其它客户端再连接上线,则 ...

  6. 二、网络编程-socket之TCP协议开发客户端和服务端通信

    知识点:之前讲的udp协议传输数据是不安全的,不可靠不稳定的,tcp协议传输数据安全可靠,因为它们的通讯机制是不一样的.udp是用户数据报传输,也就是直接丢一个数据包给另外一个程序,就好比寄信给别人, ...

  7. 用PHP的socket实现客户端到服务端的通信

    服务端 <?php error_reporting(E_ALL); set_time_limit(0); ob_implicit_flush(); //本地IP $address = 'loca ...

  8. C# Winform 通过Socket实现客户端和服务端TCP通信

    操作界面如下: 1.声明Socket 第一个参数:寻址方式,第二个参数:传输数据的方式,第三个参数:通信协议 Socket socket = new Socket(AddressFamily.Inte ...

  9. python实现一个客户端与服务端的通信

    函数介绍 Socket对象方法: 服务端: 函数 描述 .bind() 绑定地址关键字,AF_INET下以元组的形式表示地址.常用bind((host,port)) .listen() 监听TCP,可 ...

随机推荐

  1. 【Servlet】深入浅出JavaServlet重定向和请求转发

    import java.text.*; import java.util.*; import java.io.*; import javax.servlet.http.*; import javax. ...

  2. 使用Nexus搭建Maven内部服务器

    概述         我们在使用maven时,一般通过网络上一些公共的maven仓库来获取jar包,但是有时候会碰到网速比较慢的情况就比较郁闷,Nexus是一个maven的服务器,可以让我们搭建一个本 ...

  3. 【Algorithm】插入排序

    一. 算法描述 插入排序具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序的元素序列中从后向前扫描 如果该元素(已排序)大于新元素,将该元素移到下一位置 重复步 ...

  4. 使用Kotlin开发Android应用

    1.Kotlin介绍 [Kotlin](https://kotlinlang.org/) Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者.Java是 ...

  5. 压缩跟踪(CT)代码具体学习_模块1(样本的採集和扩充)

    本章主要具体解释的是compressive tracking框架中的第一部分:样本的採集和扩充部分. 在開始代码学习的前面,你须要知道的理论知识參见论文:Real-time Compressive T ...

  6. asp.net中Winform开发框架之数据即时更新的实现

    在开篇之前,首先介绍一下Winform开发框架中的界面层的继承关系,首先我把所有窗体区分为三类,一类是普通的窗体,一类编辑窗体,还有一类是列表显示窗体.窗体的集成可以封装处理很多东西,良好的封装和继承 ...

  7. android中碰撞屏幕边界反弹问题

    其实碰撞问题只是涉及到一点小算法而已,但在实际应用,尤其游戏中有可能会遇到,下面给出一个小示例,代码如下: MainActivity: package com.lovo; import android ...

  8. 使用 http 请求方式获取 eureka server的服务信息

    对于一些系统不能接入 eureka server,又需要访问接入eureka server 的服务. 方法一:直接调用服务的地址是一种实现方式,弊端就是地址是写死的,万一服务地址变更则访问不到. 方法 ...

  9. MySql(十五):MySql架构设计——可扩展性设计之 Cache 与 Search 的利用

    前言 前面章节部分所分析的可扩展架构方案,基本上都是围绕在数据库自身来进行的,这样是否会使我们在寻求扩展性之路的思维受到“禁锢”,无法更为宽广的发散开来.这一章,我们就将跳出完全依靠数据库自身来改善扩 ...

  10. 微信小程序 开发过程中遇到的坑(一)

      2124 1.我们使用app.json文件来对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.设置多 tab 的时候在pages中写注释的时候回报错. 例如: { &quo ...