python局域网聊天

来源:互联网 发布:制作工作证的软件 编辑:程序博客网 时间:2024/06/03 16:43

Python 提供了两个级别访问的网络服务。:
1.低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。
2.高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

套接字的创建语法

socket.socket([family[, type[, proto]]])

family: 套接字家族可以使AF_UNIX或者AF_INET
type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM
protocol: 一般不填默认为0.

我用低级别的网络服务做了一个python的局域网的聊天,只是控制台的简单聊天,还要升级为一个GUI的聊天
首先,我们聊天就需要一个服务器,有服务器就能聊天,称为服务套接字

import socketimport threading#创建服务套接字ss = socket.socket(socket.AF_INET,socket.SOCK_STREAM)print("建立服务套接字")ss.bind(("0.0.0.0",8888))#服务套接字绑定端口号,绑定主机#ss.bind(("0.0.0.0"(localhost是本机)是广域网,也可用作局域网,端口,避免与本电脑其他端口相同))print("绑定端口和主机")ss.listen(5)#控制聊天人数#接受客户套接字print("开始等待客户的请求")c = ss.accept()#线程阻塞print("某个客户链接到我了")# mag=c[0].recv(1024)# print("mag:",mag.decode())#decode()解码,接收的数据解码# c[0].send("是".encode())#线程 函数def myrevc(c):    while True:        msg = c.recv(1024)#当没有消息的时候休息,阻塞        print(msg.decode())threading._start_new_thread(myrevc,(c[0],))while True:    msg = input()    c[0].send(msg.encode())

这个服务器建造好了就差客户端了,具体注意的都加在代码里的注释里了。接下来需要客户套接字了。

import socketimport threading#创建客户套接字u = socket.socket(socket.AF_INET,socket.SOCK_STREAM)print("创建客户套接字")u.connect(("192.168.66.180",9999))#链接对方不成功抛出异常#这里是与服务器对应的,需要对应的ip和端口,print("我已连接到服务")# u.send("你是晓敏吗?".encode())#encode()编码# mag=u.recv(1024)# print(mag.decode())def myrevc(c):    while True:        msg = c.recv(1024)#当没有消息的时候休息,阻塞        print(msg.decode())threading._start_new_thread(myrevc,(u,))while True:    print("输入")    msg = input()    u.send(msg.encode())

简单的局域网聊天就完成了。

原创粉丝点击