Python socket实现简单聊天,同步输入和接收消息
查的资料很多都是必须等待接收数据后才能再次输入。做了修改,使用多线程的形式,实现一边输入,一边接收
服务端代码
import socket
import threading
import sys
import time spaces = " " * 50 # 主要是为了让输入和接收的消息区分开
def send_message(conn):
while True:
sys.stdout.write("\r")
data = input("%sInput:" % spaces).strip().encode('utf-8')
if not data:
continue
conn.send(data) def receive_message(conn):
while True:
messages = conn.recv(1024)
messages_format = "\rReceived[{}] :{}\n{}Input:".format(time.strftime("%Y-%m-%d %H:%M:%S"),
messages.decode('utf-8'), spaces)
sys.stdout.write(messages_format) def server_start():
sock = socket.socket()
sock.bind(('localhost', 8080))
sock.listen(1)
# 实现链接循环
print("Waiting for user ...")
while True:
conn, addr = sock.accept()
print("User is online ...")
threading.Thread(target=receive_message, args=(conn,)).start()
threading.Thread(target=send_message, args=(conn,)).start() if __name__ == '__main__':
server_start()
客户端代码
import socket
import threading
import sys
import time spaces = " " * 50 # 主要是为了让输入和接收的消息区分开 def send_message(socket_send):
while True:
messages = input("%sInput:"%spaces).strip().encode('utf-8')
if not messages:
continue
else:
socket_send.send(messages) def recevice_message(socket_receive):
while True:
data = socket_receive.recv(1024)
messages_format = "\rReceived[{}] :{}\n{}Input:".format(
time.strftime("%Y-%m-%d %H:%M:%S"), data.decode('utf-8'),
spaces)
sys.stdout.write(messages_format) def client_start():
sock = socket.socket()
sock.connect(('localhost', 8080))
threading.Thread(target=send_message, args=(sock,)).start()
threading.Thread(target=recevice_message, args=(sock,)).start() if __name__ == '__main__':
client_start()
Python socket实现简单聊天,同步输入和接收消息的更多相关文章
- python socket 多人聊天室
参考来源(其实我从上面复制了一点):Python 的 Socket 编程教程 http://www.oschina.net/question/12_76126Python线程指南 http://ww ...
- Python Socket实现简单的聊天室
通过参考其他牛人的文章和代码, 再根据自己的理解总结得出, 说明已经加在注释中, FYI 主要参考文章: http://blog.csdn.net/dk_zhe/article/details/3 ...
- C#基于Socket的简单聊天室实践
序:实现一个基于Socket的简易的聊天室,实现的思路如下: 程序的结构:多个客户端+一个服务端,客户端都是向服务端发送消息,然后服务端转发给所有的客户端,这样形成一个简单的聊天室功能. 实现的细节: ...
- python socket 编程简单入门
想讲讲套接字的概念 套接字,即英文socket的中文意译,起源于20世纪70年代,是加利福利亚大学的伯克利版本UNIX(称为BSD UNIX)的一部分.目的是实现主机上运行的一个程序与另一个运行的程序 ...
- python socket和简单tcp通信实现
python 服务端和客户端的简单交互 TCP服务端: 1 创建套接字,绑定套接字到本地IP与端口 s = socket.socket(socket.AF_INET,socket.SOCK_STREA ...
- 关于Socket编写简单聊天工具的总结(原创)
这段时间再看socket编程,虽然现在是刚刚接触,但是还是忍不住想写一篇总结,来激励自己努力学习,写的不好的地方,还请大家指教啊! 下面针对一个简单的发送消息和文件的程序说说吧. 首先是服务器需要 ...
- Python Socket实现简单web服务器
#!/usr/bin/python env # coding:utf-8 import socket ip_port = ('127.0.0.1', 80) back_log = 10 buffer_ ...
- Socket实现简单聊天
服务端: package main.java.com.socket_dome; import java.io.IOException; import java.io.InputStream; impo ...
- WPF使用socket实现简单聊天软件
公司网络限制不能传文件,先贴部分代码 控件添加到界面就行,界面随意布局 项目结构: 1.解决方案 1.1. Client 1.2. Server Client: <Window x:Class= ...
- python socket编程 实现简单p2p聊天程序
目标是写一个python的p2p聊天的项目,这里先说一下python socket的基础课程 一.Python Socket 基础课程 Socket就是套接字,作为BSD UNIX的进程通信机制,取后 ...
随机推荐
- C#.NET Framework RSA 私钥签名 公钥验签(验证签名) ver:20230612
C#.NET Framework RSA 私钥签名 公钥验签(验证签名) ver:20230612 环境说明: .NET Framework 4.6 的控制台程序 . .NET Framework 对 ...
- python测试系列教程——python+Selenium+chrome自动化测试框架
需要的环境 浏览器(Firefox/Chrome/IE-) Python Selenium Selenium IDE(如果用Firefox) FireBug.FirePath(如果用Firefox) ...
- 逍遥自在学C语言 | 指针和数组的关联
前言 指针和数组之间存在着紧密的关系.在本文中,我们将探讨指针和数组的关系.指针算术和数组遍历.多维数组与指针以及指针数组和数组指针. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 ...
- 3. IOC相关内容
1. bean 相关配置 对于 bean 的配置中,主要会讲解bean基础配置,bean的别名配置,bean的作用范围配置(重点),这三部分内容: 1.1 bean 基础配置(id 与 c ...
- Java 访问控制权限修饰符
1.访问控制权限修饰符来控制元素的访问范围 2.访问控制权限修饰符包括: public 表示公开的,任何位置都可以可以访问 protected 同包,子类 缺省 同包 private 表示私有的,只能 ...
- 从数据库中读取数据并写入到Excle电子表格之2
//CC_AutoId, CC_LoginId, CC_LoginPassword, CC_UserName, CC_ErrorTimes, CC_LockDateTime, CC_TestInt ...
- ISP-长短曝光融合生成HDR图像
1.高动态范围图像相关 图像的动态范围是指一幅图像中量化的最大亮度与最小噪声的比值.高动态范围HDR(high dynamic range)图像,能够完整表示真实场景中跨度很大的动态范围.采用普通CM ...
- 图像分割_评价指标_PSNR峰值信噪比和SSIM结构相似度
PSNR psnr是"Peak Signal to Noise Ratio"的缩写,即峰值信噪比,是一种评价图像的客观标准. 为了衡量经过处理后的影像品质,我们通常会参考PSNR值 ...
- 【环境搭建】多版本的jdk共存
问题来源 burpsuite 2021需要使用Java 9及以上版本,而其他工具需要Java 8,因此需要两个版本共存,并且做到除了burpsuite以外的工具默认使用Java 8打开. 需要的软件 ...
- 2023年ccpc大学生程序设计竞赛-crf
第一次参加这种大型线下程序设计比赛,心情自然是很激动,但比赛中并没有想象中那么顺利,甚至可以说有些惊险,比赛开始的时候,我们三人随便看看题,顺便等着跟榜,对于签到题我们自然是相信clk可以很快地独立完 ...