流式套接字程序设计实验报告
时间: 2023-07-27 17:07:21 浏览: 137
实验名称:流式套接字程序设计
实验目的:通过实验学习并掌握流式套接字的使用方法及其在网络通信中的应用。
实验内容:
1. 编写一个简单的客户端程序,连接到指定的服务器,并向服务器发送一条消息。
2. 编写一个简单的服务器程序,监听指定的端口号,接收客户端发送的消息,并将消息打印输出到控制台上。
3. 实现客户端和服务器之间的双向通信,即客户端可以向服务器发送消息,服务器也可以向客户端发送消息。
实验步骤:
1. 编写客户端程序
```python
import socket
# 创建一个socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 指定服务器的IP地址和端口号
server_address = ('127.0.0.1', 8888)
# 连接到服务器
client_socket.connect(server_address)
# 向服务器发送一条消息
message = 'Hello, Server!'
client_socket.sendall(message.encode())
# 接收服务器的响应并打印输出
data = client_socket.recv(1024)
print('Received from server:', data.decode())
# 关闭连接
client_socket.close()
```
2. 编写服务器程序
```python
import socket
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 指定监听的端口号
server_address = ('127.0.0.1', 8888)
server_socket.bind(server_address)
# 开始监听连接
server_socket.listen(1)
print('Listening on', server_address)
# 接受客户端的连接请求
client_socket, client_address = server_socket.accept()
print('Connected by', client_address)
# 接收客户端发送的消息并打印输出
data = client_socket.recv(1024)
print('Received from client:', data.decode())
# 向客户端发送一条消息
message = 'Hello, Client!'
client_socket.sendall(message.encode())
# 关闭连接
client_socket.close()
server_socket.close()
```
3. 实现客户端和服务器之间的双向通信
客户端程序:
```python
import socket
# 创建一个socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 指定服务器的IP地址和端口号
server_address = ('127.0.0.1', 8888)
# 连接到服务器
client_socket.connect(server_address)
while True:
# 从控制台输入消息并发送给服务器
message = input('Input message to server:')
client_socket.sendall(message.encode())
# 接收服务器的响应并打印输出
data = client_socket.recv(1024)
print('Received from server:', data.decode())
# 关闭连接
client_socket.close()
```
服务器程序:
```python
import socket
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 指定监听的端口号
server_address = ('127.0.0.1', 8888)
server_socket.bind(server_address)
# 开始监听连接
server_socket.listen(1)
print('Listening on', server_address)
# 接受客户端的连接请求
client_socket, client_address = server_socket.accept()
print('Connected by', client_address)
while True:
# 接收客户端发送的消息并打印输出
data = client_socket.recv(1024)
print('Received from client:', data.decode())
# 从控制台输入消息并发送给客户端
message = input('Input message to client:')
client_socket.sendall(message.encode())
# 关闭连接
client_socket.close()
server_socket.close()
```
实验结果:
经过实验,我们成功地编写了一个简单的流式套接字程序,实现了客户端与服务器之间的单向和双向通信,并通过控制台输出了相应的消息。
实验结论:
流式套接字是一种在网络上进行数据传输的工具,通过它可以在不同的计算机之间进行数据传输。我们可以使用套接字函数库来实现Socket连接的建立、数据的传输等功能。在进行网络通信时,需要设置超时时间,避免出现因网络延迟等问题导致程序卡死的情况。通过实验,我们掌握了流式套接字的使用方法及其在网络通信中的应用。