(一)socket笔记

socket(套接字)
发数据
1.流程:创建套接字----->使用套接字收/发数据------>关闭
2. 创建一个tcp socket

import socket
#创建套接字
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)         #stream 流,小河,流播
#使用套接字....

#关闭套接字
s.close()

3.创建一个udp socket

import  socket

s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)         #dgram离散可控性,可观性

s.close()

4.创建socket说明
在python中使用socket模块的函数就可以完成
socket.socket(参数1,参数2)
参数1:
可以选择AF_INET(用于internet进程间通信),或者AF_UNIX(用于同一台机器进程间通信)
参数2:
套接字类型:可以是SOCK_STREAM(流式套接字,主要用于tcp)或者是SOCK_DGGRAN(数据报套接字)
5.实例:

import socket
def main():
    s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    s.bind(('xx.x.x.x'),7788)  #绑定ip和端口号
    s.sendto(b'haha',('x.x.x.x',6666))   #两个参数。第一个是字节型的发送内容,第二个为元组型,包括目的ip和端口号
 ''' 
 或者
    send_data=input('请输入数据:')
    s.sendto(send_data.encode('utf-8'),('xx.x.x.x.',6666))
'''
    s.close()
if __name__ == '__main__':
    main()

网络调试助手显示:
在这里插入图片描述
收数据

def recive_udp():
    #建立连接器
    udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    #绑定本地的相关信息,如果不稳定会随机分配
    local_adr=("xx.xx.xx.xx",7788) #ip地址和端口号 ,ip一般不用写,表示本机ip
    udp_socket.bind(local_adr)     #传入的是元组
    #等待接受对方发送的数据
    recv_data=udp_socket.recvfrom(1024)  #表示本次接受的最大字节数
    #打印
    print(recv_data[0].decode('gbk'))
    #关闭
    udp_socket.close()

案列

import socket
def main():
    udp_sockrt=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  #udp
    udp_sockrt.bind(('x.x.x.x',7788))
    desc_ip=input('请输入目的ip:')
    desc_port=input('输入目的端口:')
    send_mes=input('发送内容:')
    #发送
    udp_sockrt.sendto(send_mes.encode('utf-8'),(desc_ip,int(desc_port)))

    #接受
    rec_data=udp_sockrt.recvfrom(1024)

    print(rec_data[0].decode('gbk'))  #显示

    udp_sockrt.close()

if __name__ == '__main__':
    main()

单工:数据传输是单向的。通信双方中,一方固定为发送端,一方则固定为接收端(收音机)
半双工:半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:对讲机。
全工:全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信,举例:电话通信。
UDP建立

猜你喜欢

转载自blog.csdn.net/chengmo123/article/details/84558474