socket编程怎么设置服务器

时间:2025-01-27 04:25:16 网络游戏

在Python中,设置一个基本的socket服务器需要以下步骤:

创建socket对象

```python

import socket

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

```

绑定IP地址和端口号

```python

server.bind(('127.0.0.1', 8888))

```

开始监听

```python

server.listen(5)

```

接受客户端连接

```python

client_socket, addr = server.accept()

```

接收客户端消息

```python

msg = client_socket.recv(1024).decode('utf-8')

```

发送响应

```python

client_socket.send("收到你的消息啦!".encode('utf-8'))

```

关闭连接

```python

client_socket.close()

```

将以上代码整合在一起,一个简单的服务器代码如下:

```python

import socket

创建socket对象

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

绑定IP和端口

server.bind(('127.0.0.1', 8888))

开始监听

server.listen(5)

print("等待客户端连接...")

while True:

等待客户端连接

client_socket, addr = server.accept()

print(f"客户端 {addr} 已连接")

接收客户端消息

msg = client_socket.recv(1024).decode('utf-8')

print(f"收到消息: {msg}")

发送响应

client_socket.send("收到你的消息啦!".encode('utf-8'))

关闭连接

client_socket.close()

```

这个代码会创建一个监听在本地IP(127.0.0.1)和端口8888的服务器,等待客户端连接,接收消息并回复“收到你的消息啦!”。

多线程版本的服务器

如果需要服务器能够同时处理多个客户端连接,可以使用多线程。以下是一个多线程服务器的示例:

```python

import socket

import threading

def handle_client(client_socket, addr):

while True:

接收客户端消息

data = client_socket.recv(1024).decode('utf-8')

print(f"收到来自 {addr} 的消息: {data}")

发送响应

client_socket.send("收到你的消息了!".encode('utf-8'))

创建socket对象

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

绑定IP和端口

server.bind(('127.0.0.1', 8888))

开始监听

server.listen(5)

print("服务器已启动,等待连接...")

while True:

等待客户端连接

client_socket, addr = server.accept()

print(f"客户端 {addr} 已连接")

创建新线程处理客户端连接

client_handler = threading.Thread(target=handle_client, args=(client_socket, addr))

client_handler.start()

```

这个多线程服务器会在接收到新的客户端连接时,创建一个新的线程来处理该客户端的消息,从而允许多个客户端同时连接和服务。