查的资料很多都是必须等待接收数据后才能再次输入。做了修改,使用多线程的形式,实现一边输入,一边接收

服务端代码

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实现简单聊天,同步输入和接收消息的更多相关文章

  1. python socket 多人聊天室

    参考来源(其实我从上面复制了一点):Python 的 Socket 编程教程  http://www.oschina.net/question/12_76126Python线程指南 http://ww ...

  2. Python Socket实现简单的聊天室

    通过参考其他牛人的文章和代码,  再根据自己的理解总结得出,  说明已经加在注释中, FYI 主要参考文章: http://blog.csdn.net/dk_zhe/article/details/3 ...

  3. C#基于Socket的简单聊天室实践

    序:实现一个基于Socket的简易的聊天室,实现的思路如下: 程序的结构:多个客户端+一个服务端,客户端都是向服务端发送消息,然后服务端转发给所有的客户端,这样形成一个简单的聊天室功能. 实现的细节: ...

  4. python socket 编程简单入门

    想讲讲套接字的概念 套接字,即英文socket的中文意译,起源于20世纪70年代,是加利福利亚大学的伯克利版本UNIX(称为BSD UNIX)的一部分.目的是实现主机上运行的一个程序与另一个运行的程序 ...

  5. python socket和简单tcp通信实现

    python 服务端和客户端的简单交互 TCP服务端: 1 创建套接字,绑定套接字到本地IP与端口 s = socket.socket(socket.AF_INET,socket.SOCK_STREA ...

  6. 关于Socket编写简单聊天工具的总结(原创)

    这段时间再看socket编程,虽然现在是刚刚接触,但是还是忍不住想写一篇总结,来激励自己努力学习,写的不好的地方,还请大家指教啊! 下面针对一个简单的发送消息和文件的程序说说吧.   首先是服务器需要 ...

  7. Python Socket实现简单web服务器

    #!/usr/bin/python env # coding:utf-8 import socket ip_port = ('127.0.0.1', 80) back_log = 10 buffer_ ...

  8. Socket实现简单聊天

    服务端: package main.java.com.socket_dome; import java.io.IOException; import java.io.InputStream; impo ...

  9. WPF使用socket实现简单聊天软件

    公司网络限制不能传文件,先贴部分代码 控件添加到界面就行,界面随意布局 项目结构: 1.解决方案 1.1. Client 1.2. Server Client: <Window x:Class= ...

  10. python socket编程 实现简单p2p聊天程序

    目标是写一个python的p2p聊天的项目,这里先说一下python socket的基础课程 一.Python Socket 基础课程 Socket就是套接字,作为BSD UNIX的进程通信机制,取后 ...

随机推荐

  1. C#.NET Framework RSA 私钥签名 公钥验签(验证签名) ver:20230612

    C#.NET Framework RSA 私钥签名 公钥验签(验证签名) ver:20230612 环境说明: .NET Framework 4.6 的控制台程序 . .NET Framework 对 ...

  2. python测试系列教程——python+Selenium+chrome自动化测试框架

    需要的环境 浏览器(Firefox/Chrome/IE-) Python Selenium Selenium IDE(如果用Firefox) FireBug.FirePath(如果用Firefox) ...

  3. 逍遥自在学C语言 | 指针和数组的关联

    前言 指针和数组之间存在着紧密的关系.在本文中,我们将探讨指针和数组的关系.指针算术和数组遍历.多维数组与指针以及指针数组和数组指针. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 ...

  4. 3. IOC相关内容

    1. bean 相关配置 ‍ 对于 bean 的配置中,主要会讲解​bean基础配置​,bean的别名配置​,bean的作用范围配置​(重点),这三部分内容: 1.1 bean 基础配置(id 与 c ...

  5. Java 访问控制权限修饰符

    1.访问控制权限修饰符来控制元素的访问范围 2.访问控制权限修饰符包括: public 表示公开的,任何位置都可以可以访问 protected 同包,子类 缺省 同包 private 表示私有的,只能 ...

  6. 从数据库中读取数据并写入到Excle电子表格之2

     //CC_AutoId, CC_LoginId, CC_LoginPassword, CC_UserName, CC_ErrorTimes, CC_LockDateTime, CC_TestInt ...

  7. ISP-长短曝光融合生成HDR图像

    1.高动态范围图像相关 图像的动态范围是指一幅图像中量化的最大亮度与最小噪声的比值.高动态范围HDR(high dynamic range)图像,能够完整表示真实场景中跨度很大的动态范围.采用普通CM ...

  8. 图像分割_评价指标_PSNR峰值信噪比和SSIM结构相似度

    PSNR psnr是"Peak Signal to Noise Ratio"的缩写,即峰值信噪比,是一种评价图像的客观标准. 为了衡量经过处理后的影像品质,我们通常会参考PSNR值 ...

  9. 【环境搭建】多版本的jdk共存

    问题来源 burpsuite 2021需要使用Java 9及以上版本,而其他工具需要Java 8,因此需要两个版本共存,并且做到除了burpsuite以外的工具默认使用Java 8打开. 需要的软件 ...

  10. 2023年ccpc大学生程序设计竞赛-crf

    第一次参加这种大型线下程序设计比赛,心情自然是很激动,但比赛中并没有想象中那么顺利,甚至可以说有些惊险,比赛开始的时候,我们三人随便看看题,顺便等着跟榜,对于签到题我们自然是相信clk可以很快地独立完 ...