Python中的网络编程

socket() 模块函数

要创建套接字,必须使用 socket.socket() 函数,它一般的语法如下。

1
socket(socket_family, socket_type, protocol=0)

其中, socket_family 是 AF_UNIX 或 AF_INET, socket_type 是 SOCK_STREAM 或 SOCK_DGRAM 。protocol 通常省略,默认为 0 。

所以,为了创建 TCP/IP 套接字,可以用下面的方式调用 socket.socket()。

1
tcpSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

同样,为了创建 UDP/IP 套接字,需要执行以下语句。

1
udpSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

因为有很多 socket 模块属性,所以此时可以使用下面的语句来导入 socket 模块。

1
from socket import *

然后可以创建套接字对象,再之后就可以使用套接字对象的方法进行进一步的交互。

1
tcpSock = socket(AF_INET, SOCK_STREAM)

UDP 客户端与服务器的创建

UDP 客户端的创建

创建一个套接字对象,代码如下

1
2
from socket import *
udpSock = socket(AF_INET, SOCK_DGRAM)

然后使用 sendto() 方法可以发送信息,代码如下

1
2
3
data = input("请输入你想要发送的信息:")
# sendto(data, (ip, port))
udpSock.sendto(data.encode('gb2312'), ('172.16.217.129', 8080))

这里使用 mac 向 windows 发送一段信息,由于 windows 软件以 gb2312 解码,因此在 Python 代码中需要把要发送的信息编码成 gb2312,如图。

UDP 服务器的创建

同上先创建一个套接字对象,和创建客户端不同,服务器需要绑定到某一个地址上,只有这样客户端才知道如何给服务器发送信息。

1
2
3
4
5
6
7
from socket import *
udpSock = socket(AF_INET, SOCK_DGRAM)
# 绑定到 7788 端口
udpSock.bind(("", 7788))
udpSock.recvfrom(1024)
content, ip = udpdata
print(ip, ":", content.decode("gb2312"))

这次使用 windows 向 mac 发送信息,如图。


-------------本文结束感谢您的阅读-------------
0%