Python中编写Socket服务器和客户端的基本步骤如下:
服务器端
1. 导入`socket`模块。
2. 创建一个`socket`对象,指定地址族(`AF_INET`)和套接字类型(`SOCK_STREAM`)。
3. 使用`bind`方法将`socket`绑定到指定的IP地址和端口号。
4. 使用`listen`方法设置监听队列的大小。
5. 使用`accept`方法等待客户端连接请求。
6. 当客户端连接后,进行数据通信。
7. 关闭与客户端的连接。
客户端
1. 导入`socket`模块。
2. 创建一个`socket`对象,指定地址族(`AF_INET`)和套接字类型(`SOCK_STREAM`)。
3. 使用`connect`方法连接到服务器。
4. 进行数据通信。
5. 关闭与服务器的连接。
示例代码
服务器端
import socket
def server():
host = '127.0.0.1'
port = 12345
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
server_socket.listen(1)
print('等待连接...')
client_socket, addr = server_socket.accept()
print('连接已建立:', addr)
file_name = client_socket.recv(1024).decode()
print('接收文件:', file_name)
with open(file_name, 'wb') as file:
while True:
data = client_socket.recv(1024)
if not data:
break
file.write(data)
client_socket.close()
server_socket.close()
print('文件接收完成!')
if __name__ == '__main__':
server()
客户端
import socket
def client():
host = '127.0.0.1'
port = 12345
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((host, port))
file_name = input('请输入文件名:')
client_socket.send(file_name.encode('utf-8'))
with open(file_name, 'rb') as file:
while True:
data = file.read(1024)
if not data:
break
client_socket.send(data)
client_socket.close()
if __name__ == '__main__':
client()
以上代码展示了如何使用Python的`socket`模块创建一个简单的文件传输服务器和客户端。服务器端等待客户端连接,接收文件名,然后接收文件内容并保存。客户端连接到服务器,发送文件名,然后发送文件内容。
请根据实际需求修改代码中的IP地址、端口号和文件名等参数。