python局域网聊天

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 socket
import 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 socket
import 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())

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

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值