目录
Socket
通过网络完成进程间通信方式
Socket的本质式编程接口(API)
使用socket需要创建好socket对象
AF_INET:ipv4协议; AF_INET6:ipv6协议;
- SOCK套接字类型;
- SOCK_STREAM提供面向连接的稳定数据传输,即TCP协议,数据传输比较有保障。慢
- SOCK_DGRAM是基于UDP的,专门用于局域网。快
UDP协议
实验1:
利用python代码,通过feiQ来给自己发送信息
前提:下载好飞秋(feiQ)
第一步:终端输入 ipconfig,找到自己电脑的ipv4地址。
第二步:查看FeiQ端口号。
第三步:代码实现
from socket import * #从socket中导入它的所有工具
s = socket(AF_INET,SOCK_DGRAM)
addr = ("192.168.1.6",2425)#本机网络地址,飞书地址
data = "1:123456:杨洋:杨洋的小米电脑:32:我喜欢你"
#1代表版本号;123456数据包编号;杨洋:代表谁发的;杨洋的小米电脑:代表用什么设备;27:代表发送数据;我喜欢:你代表发送内容"
s.sendto(data.encode("gb2312"),addr)#feiQ字符集为gb2312
s.close()
第四步:结果展示
实验2:
利用python,来实现一个简易的对话聊天。(基于UDP协议)
代码实现:作为发送方
#发送方,先发送后接收
from socket import * #从socket中导入它的所有工具
s = socket(AF_INET,SOCK_DGRAM)
s.bind(("",8789))#接收方不写默认本机,两层括号记住,端口用1024-65535之间
#发送
addr = ("192.168.1.6",8788)#本机网络地址,对方端口号
data = input("请输入:")
s.sendto(data.encode(),addr)
#接收
redata = s.recvfrom(1024)
print(redata[0].decode())
s.close()
运行结果展示:
代码实现:作为接收方(新建一个文件)
#接收方,先接收后发送
from socket import * #从socket中导入它的所有工具
s = (s.bind(("",8788))#接收方不写默认本机,两层括号记住,端口用1024-65535之间
#接收
redata = s.recvfrom(1024)
print(redata[0].decode())
#发送
addr = ("192.168.1.6",8789)#接收完消息后,给别人发消息
data = input("请输入:")
s.sendto(data.encode(),addr)
s.close()
运行结果展示:
TCP协议
实验1:
利用python,制作一个简易的聊天接收。(基于TCP协议)
服务端:
from socket import *
server_inter = socket(AF_INET,SOCK_STREAM)
address = ("192.168.1.6",7788)#绑定地址,端口
server_inter.bind(address)#绑定
server_inter.listen(5)#listen设置为监听状态;5设置最大连接数
new_server,client_addr = server_inter.accept()#new_server新的套接对象,client_addr用户地址,server_inter.accept接收(TCP接收以防重复调用))
recv_data = new_server.recv(1024)#接收字节
print(recv_data.decode())#打印出来;
new_server.send("努科奇".encode())#发送信息,encode()返回编码后的字符串
new_server.close()
server_inter.close()
运行结果展示:
用户端:
from socket import *
lient_socket = socket(AF_INET,SOCK_STREAM)
ser_add = ("192.168.1.6",7788)
lient_socket.connect(ser_add)
lient_socket.send("的法国海军".encode())
recv_data = lient_socket.recv(1024)
print(recv_data.decode())
lient_socket.close()
运行结果展示:
总结:
本篇文章是跟着老师学习的,有一些名称定义啥的有些不符规范,见笑了。不过整体运行都是正确的。我还在努力学习中,感谢读者大大看到这里啦,如果看到这能给我个小小的赞吗,你的赞将是我更新的动力,谢谢o(* ̄▽ ̄*)ブ。