Socket

socket简称套接字,是进程间通信的一种方式。与其他的方式的进程间的通讯的方式不同的是,socket是实现了主机间进程间的通讯。我们网络上的各种服务都是基于socket来完成的。例如QQ.微信。

怎么样创建socket呢。


创建一个tcpsocket:

s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

创建一个UDP类型的socket;


# # 创建套接字


# udpSocket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)


UDP介绍

udp—–数据报文协议,是一个无连接的简单的面向数据报的运输层协议,UDP不提供可靠性,他只是将应用程序传送给IP层的数据报文发送出去,并不保证能否达到目的地。由于UDP在传输的过程中不需要和服务器建立链接。且没有超时重发的的机制。故而传输很快。




UDP 发送数据

importsocketdefmain():#1.创建套接字udpSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#2.设置目的端口和IPsendArr=('192.168.31.174',65535)whileTrue:sendData=input('请输入你要发送的信息')ifsendData=="exit":break#3.发送数据#发送数据,此处有一个坑是sendto()里面的参数必须二进制数据,不能直接传字符串udpSocket.sendto(sendData.encode('utf-8'),sendArr)#4.关闭套接字udpSocket.close()if__name__=='__main__':main()


UDP 接收数据

importsocketdefmain():#1.创建UDP套接字udpSocket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#2.绑定端口号udpSocket.bind(("",7789))whileTrue:#3.接收打印数据recvData=udpSocket.recvfrom(1024)content,destInfo=recvDataprint("contentis%s"%content)#print("contentis%s"%content.decode("utf-8"))print("contentis%s"%content.decode("gbk"))#windows默认编码为gbkprint(recvData)#4.关闭套接字udpSocket.close()if__name__=='__main__':main()


UDP简单半双工聊天实现

#Author:MaomaoLiimportsocketdefsend_msg(udp_socket):"""发送信息"""#发送#获取需要发送的内容desc_ip=input("请输入需要发送的目的IP:")desc_port=int(input("请输入需要发送的目的端口:"))send_data=input("请输入需要发送的数据:")udp_socket.sendto(send_data.encode("utf-8"),(desc_ip,desc_port))defresv_msg(udp_socket):"""接收数据"""resv_data=udp_socket.recvfrom(1024)resv_msg,resv_ip=resv_dataprint("%s:%s"%(resv_msg.decode("utf-8"),resv_ip))defmian():#创建套接字udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)#绑定信息udp_socket.bind(("",7789))#循环来进行处理事情whileTrue:op=print("请输入功能1发送2接收0退出:")ifop=="1":send_msg(udp_socket)elifop=="2":resv_msg(udp_socket)elifop=="0":breakelse:print("输入错误")if__name__=='__main__':mian()