Socket——左手和右手聊天
什么是Socket
- 官方解释:Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议
- 个人粗浅理解:Socket就是管道,当用户发送请求时,Socket在目的与本地之间建立管道,将TCP/IP协议通过这个管道承载起来,最终让Socket去决定数据的传输。
代码实现
Server(左手)
import socket #导入套接字模块
from threading import Thread
#打开
server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #创建socket对象,AF_INET:ipv4; SOCK_STREAM:TCP; SOCK_DGRAM:UDP
server_socket.bind((('127.0.0.1',8888))) #绑定对应的地址和端口
server_socket.listen(10) #设置最大连接数
print('******Server******')
new_socket,address=server_socket.accept() #阻塞等待#收发
# 发送内容
def send_msg():while True:msg = input()new_socket.send(msg.encode(encoding='utf-8'))# 接收数据
def recv_data():while True:data = new_socket.recv(1024)print('client:', data.decode())if __name__=='__main__':send_thread=Thread(target=send_msg)recv_thread=Thread(target=recv_data)send_thread.start()recv_thread.start()#关闭# new_socket.close()# server_socket.close()
Client(右手)
import socket
from threading import Thread#打开
client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client_socket.connect(('127.0.0.1',8888))
print('******Client******')#收发
# 发送数据
def send_msg():while True:msg = input()client_socket.send(msg.encode(encoding='utf-8'))# 接收数据
def recv_data():while True:data = client_socket.recv(1024)print('server:', data.decode())if __name__=='__main__':send_thread=Thread(target=send_msg)recv_thread=Thread(target=recv_data)send_thread.start()recv_thread.start()#关闭# client_socket.close()
聊天记录
参考链接:
https://blog.csdn.net/stoic163/article/details/102473886
https://www.cnblogs.com/clschao/articles/9585555.html#part_2
Socket——左手和右手聊天相关推荐
- Socket编程实现简易聊天室
1.Socket基础知识 Socket(套接字)用于描述IP地址和端口,是通信链的句柄,应用程序可以通过Socket向网络发出请求或者应答网络请求. Socket是支持TCP/IP协议的网络通信的基本 ...
- Android IPC机制(五)用Socket实现跨进程聊天程序
1.Socket简介 Socket也称作"套接字",是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信.它分为流 ...
- Express+Socket.IO 实现简易聊天室
代码地址如下: http://www.demodashi.com/demo/12477.html 闲暇之余研究了一下 Socket.io,搭建了一个简易版的聊天室,如有不对之处还望指正,先上效果图: ...
- 左手手机右手智慧屏 华为9月要搞大事情
但凡现在做大做强的科技厂商,都拥有自己的智能生态圈.虽然有个别步子迈大,把圈子做凉的,却也有独当一面将圈子做强的.健康的生态圈既包含手机.平板.IoT.AIoT等硬件设备,还有成熟的操作系统,它像血液 ...
- java Socket实现简单在线聊天(二)
出处:http://blog.csdn.net/tuzongxun 接<java Socket实现简单在线聊天(一)>,在单客户端连接的基础上,这里第二步需要实现多客户端的连接,也就需要使 ...
- java左手握右手_在队列中,向中看齐举哪个手?
指挥员下达[相中看齐]口令,中间被训者应迅速举起右手,右手握拳,拳眼朝向自己. 单个军人队列动作--立正.稍息.停止间转法.齐步.跑步.立定.敬礼.纵队.横队.集合.解散.整齐.报数. 队列指挥--主 ...
- Papi酱: 左手奶瓶右手尿布× 左手papitube右手娱乐圈√
文/琥珀消研社 作者/白露 Papi酱当女一号的电影<明天会好的>,你们打几分? 章子怡: "我们演员的门槛这么低了么?"(哔) Papi酱新上映的这部电影啊,讲的是个 ...
- java socket多人聊天室_如何运用Java socket实现多人聊天室功能
如何运用Java socket实现多人聊天室功能 导语:如何运用Java socket实现多人聊天室功能呢?下面是小编给大家提供的代码实现,大家可以参考阅读,更多详情请关注应届毕业生考试网. 目录结构 ...
- 使用python基于socket的tcp服务器聊天室
# coding=utf-8 import socket,threading,time '''代码说明:1.创建一个字典用于接受客户端的用户名和信息2.创建一个类对象client用于编写客户端套接字对 ...
最新文章
- 感受lambda之美,推荐收藏,需要时查阅
- 终端输入参数:argparse和sys.argv[]的用法
- MongoDB基础教程系列--目录结构
- WWW 2020 开源论文 | 异构图Transformer
- python实现微信自动发信息_Python实现智慧-定期向微信女友发送消息,python,智给,定时,发消息...
- 小麦助教:通过阿里云原生中间件产品组合,加速微服务架构落地
- WCF光芒下的Web Service
- springCloud 搭建Eureka
- spring获取webapplicationcontext,applicationcontext几
- c/c++标准库中的文件操作总结
- 大中型网站使用图片域名的必要性原因
- IDEA 之because it is included into a circular dependency循环依赖的解决办法
- 服务器上安装微软雅黑,添加微软雅黑字体到 CentOS 7
- 计算机网络在电力系统继电保护的应用毕业论文,毕业论文 110kV电力系统继电保护的配置...
- 会声会影滤镜特效教程之气泡滤镜
- 微信突然限制,你的小程序链接还好吗?
- Unity--AnimationCurve动画曲线
- FAT文件系统原理(一)
- Photoshop如何切图
- 使用ethtool限制服务器网速
热门文章
- 腾讯星际争霸 TStarBots1解读
- Django整合ElasticSearch,实现数据的快速检索(有代码)
- C语言用结构体来存放矩阵,妙用结构体 简化报文封装和解析
- 使用R语言进行图像分类
- 分享119个HTML个性简实模板,总有一款适合您
- 反射望远镜的发展历程(1)
- 超声波液位计——非接触式液位测量
- 计算机窗口和外观设置在哪里,Windows10系统怎么开启控制面板的颜色和外观设置窗口...
- 数据结构超市选址、最短路径查询、地址信息查询
- python 文本文件的编码格式:ASCII编码和UNICODE编码