Python Socket,并完成简单的聊天室
来源:互联网 发布:网络电视机顶合 编辑:程序博客网 时间:2024/06/05 20:35
Socket是什么?
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力
Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
网络协议:
TCP/IP,udb,http等等都是网络协议。
了解这么多我们开始做一个简单的聊天室吧。
服务器:
import socketimport threadings=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind(("0.0.0.0",9999)) ## 0,0,0,0的意思是所有ip都可以连接,后面的9999是端口。s.listen(5) ##这个是socket的监听事件,用来约束连接数量sock,addr =s.accept() #因为这个方法返回的是元组有两位,所以我直接使用两个接收。print("有人连接!!")print(sock) #这里可以发现sock是网络用户的详细信息print(addr) # 这个是连接网络的ip和端口true=Truedef rec(sock): global true while true: t=sock.recv(1024).decode('utf8') #函数的核心语句就一条接收方法recv限制接收信息的大小使用byte单位。 if t == "exit": #如果输入exit退出 true=False print(t)trd=threading._start_new_thread(target=rec,args=(sock,)) #使用_start_new_thread方法定义线程并执行,args这里必须使用元组所以有逗号。while true: #发送消息 t=input() sock.send(t.encode('utf8')) #使用socket的send方法发送消息无限循环 if t == "exit": true=Falses.close()
客户端:
import socketimport threadings=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(("192.168.11.58",9999)) # 使用connect方法连接服务器true=Truedef rec(s): global true while true: t=s.recv(1024).decode("utf8") #客户端也同理 if t == "exit": true=False print(t)trd=threading._start_new_thread(target=rec,args=(s,))trd.start()while true: t=input() s.send(t.encode('utf8')) if t == "exit": true=Falses.close()
解释在注释中。
阅读全文
0 0
- Python Socket,并完成简单的聊天室
- Python基于Socket实现简单聊天室
- Java写的简单Socket聊天室
- java基于socket tcp的简单聊天室
- socket实现简单的多人聊天室
- C#基于Socket的简单聊天室实践
- socket编程:简单的多客户端聊天室
- socket通信实例(简单的聊天室)
- java简单Socket聊天室程序的实现
- 基于socket---简单聊天室的实现
- 使用socket.io编程的简单聊天室
- Socket实现简单聊天室
- node socket 简单聊天室
- Python socket聊天室程序
- Python socket聊天室程序
- python简单的多人聊天室
- Python简单的多客户端聊天室程序
- SOCKET与 线程 完成聊天室 (服务端)
- unity创建树
- Keil工程下各个后缀名文件的作用
- python 网络编程
- Simplescalar在Ubuntu12.04 64位上的安装流程
- run as server和run as run java application
- Python Socket,并完成简单的聊天室
- 知识图谱三元组抽取
- utf8编码原理详解
- 数据结构与算法3:链表2
- 人脸识别 -- 绪论之《生物特征识别技术》开篇
- error LNK2019: 无法解析的外部符号 __imp____glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用
- vue中使用base64和md5
- 从头搭建IntelliJ IDEA环境
- Mycat学习实战-Mycat读写分离