写一段python socket客户端程序
时间: 2023-09-22 15:05:03 浏览: 74
以下是一个简单的 Python TCP socket 客户端程序:
```python
import socket
# 创建一个 TCP 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('请输入消息:')
client_socket.sendall(message.encode())
# 接收服务器的响应
data = client_socket.recv(1024)
print('收到消息:', data.decode())
# 如果收到 "bye" 消息,就结束连接
if data.decode() == 'bye':
break
# 关闭连接
client_socket.close()
```
该程序通过 `socket` 模块创建了一个 TCP socket 客户端,连接到指定的服务器地址。然后通过 `sendall()` 方法向服务器发送消息,接收到服务器的响应后再通过 `recv()` 方法接收数据。最后通过 `close()` 方法关闭连接。
相关问题
写一段socket python客户端 和 服务端 发送文件
在Python中,你可以使用socket模块来创建一个简单的TCP服务器和客户端,用于发送文件。这里有一个基本的例子,包括服务端接收文件和客户端发送文件。
**服务端(server.py):**
```python
import socket
import os
def start_server():
# 创建套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 8000))
server_socket.listen(1)
print("Server is listening on port 8000...")
while True:
client_connection, addr = server_socket.accept()
print(f"Connection from {addr} accepted.")
file_path = input("Enter the path of the file to be sent: ")
if not os.path.exists(file_path):
print("File does not exist.")
continue
with open(file_path, 'rb') as file:
data = file.read()
# 发送文件长度
client_connection.send(str(len(data)).encode())
# 发送文件内容
client_connection.sendall(data)
print(f"Succesfully sent file {file_path}")
client_connection.close()
if __name__ == "__main__":
start_server()
```
**客户端(client.py):**
```python
import socket
import sys
def send_file_to_server(file_path, server_address):
# 创建套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect(server_address)
try:
# 获取文件大小并发送
with open(file_path, 'rb') as file:
file_size = os.fstat(file.fileno()).st_size
client_socket.send(str(file_size).encode())
# 发送文件内容
with open(file_path, 'rb') as file:
data = file.read()
client_socket.sendall(data)
print(f"Sent file {file_path} to server.")
except Exception as e:
print(f"Error sending file: {e}")
finally:
client_socket.close()
if __name__ == "__main__":
server_address = ('localhost', 8000) # 服务端地址
file_path = sys.argv[1] if len(sys.argv) > 1 else "test.txt"
send_file_to_server(file_path, server_address)
```
要在命令行运行客户端,你需要提供一个文件路径作为参数,例如:
```
python client.py test.txt
```
然后在另一个终端启动服务端:
```
python server.py
```
注意这只是一个基础示例,实际应用中你可能需要处理更多的边界情况,并添加错误处理。此外,为了更安全地传输文件,可以考虑使用SSL/TLS加密连接。
编写一段python处理socket的程序
下面是一个简单的Python Socket程序,可以通过TCP协议进行通信:
```python
import socket
# 创建一个 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
# 设置端口号
port = 9999
# 绑定端口号
server_socket.bind((host, port))
# 设置最大连接数,超过后排队
server_socket.listen(5)
while True:
# 建立客户端连接
client_socket, addr = server_socket.accept()
print("连接地址: %s" % str(addr))
msg = '欢迎访问菜鸟教程!' + "\r\n"
client_socket.send(msg.encode('utf-8'))
client_socket.close()
```
以上代码创建了一个服务器端的Socket程序,它监听本地主机的9999端口。当客户端连接到该端口时,服务器会发送一条欢迎消息,并关闭连接。
阅读全文