Socket(套接词)

目录

Socket

UDP协议

实验1:

实验2:

TCP协议

实验1:


Socket

通过网络完成进程间通信方式

Socket的本质式编程接口(API)

使用socket需要创建好socket对象

Socket(套接词)_第1张图片

AF_INET:ipv4协议; AF_INET6:ipv6协议;   

  • SOCK套接字类型;
  • SOCK_STREAM提供面向连接的稳定数据传输,即TCP协议,数据传输比较有保障。慢
  • SOCK_DGRAM是基于UDP的,专门用于局域网。快

UDP协议

实验1:

利用python代码,通过feiQ来给自己发送信息

前提:下载好飞秋(feiQ)

第一步:终端输入 ipconfig,找到自己电脑的ipv4地址。

Socket(套接词)_第2张图片

第二步:查看FeiQ端口号。

Socket(套接词)_第3张图片

第三步:代码实现

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

第四步:结果展示

Socket(套接词)_第4张图片


实验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() 

 运行结果展示:

Socket(套接词)_第5张图片

代码实现:作为接收方(新建一个文件

#接收方,先接收后发送

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

 运行结果展示: 

Socket(套接词)_第6张图片 


TCP协议

Socket(套接词)_第7张图片 

实验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()

  运行结果展示:

Socket(套接词)_第8张图片 

 用户端:

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

 运行结果展示: 

Socket(套接词)_第9张图片


 总结:

本篇文章是跟着老师学习的,有一些名称定义啥的有些不符规范,见笑了。不过整体运行都是正确的。我还在努力学习中,感谢读者大大看到这里啦,如果看到这能给我个小小的赞吗,你的赞将是我更新的动力,谢谢o(* ̄▽ ̄*)ブ。

你可能感兴趣的:(python学习笔记,python,jupter,ipython,tcp/ip,网络协议)