创建socket
import socket
socket.socket(AddressFamily, Type)
- 函数socket.socket创建一个socket, 该函数有两个参数
- Address Family:可以选择AF_INET(用于Internet进程间通信)或者AF_UNIX(用于同一台机器进程间通信), 实际工作中常用AF_INET
- Type : 套接字类型, 可以是SOCK_STREAM(流式套接字, 主要用于TCP协议)或者SOCK_DGRAM(数据报套接字, 主要用于UDP协议)
tcp socket
创建一个tcp socket
import socket
# 创建tcp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 这里是使用套接字的功能
# 关闭套接字
s.close()
udp socket
创建udp套接字
import socket
# 创建udp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 这里是使用套接字的功能
# 关闭套接字
s.close()
使用udp发送和接收数据
发送数据
import socket
# 创建udp的套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 从键盘获取数据
send_data = input("请输入要发送的数据:")
# 使用套接字收发数据
udp_socket.sendto(send_data.encode('gbk'), ("192.168.1.103", 8080))
# 关闭套接字
udp_socket.close()
接收数据
import socket
def main():
# 1.创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# ip和端口
localaddr = ("", 7788)
# 2.绑定端口
udp_socket.bind(localaddr)
# 3.接收信息
socket_data = udp_socket.recvfrom(1024)
# 4.打印信息
print(socket_data[0].decode('GBK'))
# 5.关闭套接字
udp_socket.close()
if __name__ == '__main__':
main()
udp聊天器
import socket
def main():
# 1.创建套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定信息
udp_socket.bind(("", 8080))
while True:
send_ip = input("请输入对方的ip: ")
send_port = int(input("请输入对方的port: "))
send_data = input("请输入要发送的数据:")
udp_socket.sendto(send_data.encode('GBK'), (send_ip, send_port))
# 接收并显示
recv_data = udp_socket.recvfrom(1024)
print(recv_data[1], recv_data[0].decode('GBK'))
if __name__ == '__main__':
main()