实验内容 1.InetAddress类的使用。 2.UDP通信的发送端和接收端程序的编写。 3.TCP通信的服务器端和客户端程序的编写。用python编写代码
时间: 2024-03-19 20:44:58 浏览: 68
1. InetAddress类的使用
InetAddress类表示IP地址,可以使用getByName()方法获取指定主机名对应的IP地址,也可以使用getLocalHost()方法获取本机IP地址。示例代码如下:
```python
import socket
# 根据主机名获取IP地址
addr = socket.gethostbyname('www.baidu.com')
print(addr)
# 获取本机IP地址
local_addr = socket.gethostbyname(socket.gethostname())
print(local_addr)
```
2. UDP通信的发送端和接收端程序的编写
UDP通信是无连接的,发送端和接收端之间没有建立连接,每次发送数据都是独立的。UDP通信可以使用socket的SOCK_DGRAM类型实现。下面是一个简单的UDP通信的发送端和接收端程序。
发送端代码:
```python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
host = '127.0.0.1'
port = 8888
data = 'Hello, server!'
s.sendto(data.encode(), (host, port))
s.close()
```
接收端代码:
```python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
host = '127.0.0.1'
port = 8888
s.bind((host, port))
data, addr = s.recvfrom(1024)
print(data.decode())
s.close()
```
首先,发送端创建一个SOCK_DGRAM类型的socket对象,指定要发送的主机名和端口号,然后发送数据。
接收端创建一个SOCK_DGRAM类型的socket对象,绑定要监听的主机名和端口号,然后接收数据。注意要指定接收数据的缓冲区大小,这里使用1024字节。
3. TCP通信的服务器端和客户端程序的编写
TCP通信是面向连接的,发送端和接收端之间需要先建立连接,才能进行数据传输。TCP通信可以使用socket的SOCK_STREAM类型实现。下面是一个简单的TCP通信的服务器端和客户端程序。
服务器端代码:
```python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '127.0.0.1'
port = 8888
s.bind((host, port))
s.listen(1)
conn, addr = s.accept()
print('Connected by', addr)
data = conn.recv(1024)
print(data.decode())
conn.sendall('Hello, client!'.encode())
conn.close()
s.close()
```
客户端代码:
```python
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '127.0.0.1'
port = 8888
s.connect((host, port))
s.sendall('Hello, server!'.encode())
data = s.recv(1024)
print(data.decode())
s.close()
```
首先,服务器端创建一个SOCK_STREAM类型的socket对象,绑定要监听的主机名和端口号,然后开始监听,等待客户端连接。当有客户端连接时,accept()方法会返回一个新的socket对象和客户端地址。服务器端可以使用这个socket对象进行数据传输。
客户端创建一个SOCK_STREAM类型的socket对象,指定要连接的主机名和端口号,然后开始连接。连接成功后,客户端可以使用这个socket对象进行数据传输。
以上是基本的TCP和UDP通信的实现,如果需要更加复杂的通信,可以参考Python官方文档中的Socket编程部分。
阅读全文