Socket(套接词)

目录

Socket

UDP协议

实验1:

实验2:

TCP协议

实验1:


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(* ̄▽ ̄*)ブ。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五彩大铁猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值