用python写一个基于socket简易版的语音通话系统
时间: 2023-09-04 22:03:58 浏览: 84
基于Socket的简易语音通话系统可以通过Python实现。下面是一个简单的实现示例:
首先,需要导入Python的socket库和threading库:
```python
import socket
import threading
```
创建一个服务器类,包含初始化方法和接收通话的方法:
```python
class Server:
def __init__(self, server_ip, server_port):
self.server_ip = server_ip
self.server_port = server_port
def start(self):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((self.server_ip, self.server_port))
server_socket.listen(1)
print("等待客户端连接...")
client_socket, client_address = server_socket.accept()
print("已连接:", client_address)
self.receive_calls(client_socket)
client_socket.close()
server_socket.close()
def receive_calls(self, client_socket):
while True:
data = client_socket.recv(1024)
if not data:
break
print("对方:", data.decode())
response = input("我:")
client_socket.send(response.encode())
```
创建一个客户端类,包含初始化方法和拨打通话的方法:
```python
class Client:
def __init__(self, server_ip, server_port):
self.server_ip = server_ip
self.server_port = server_port
def start(self):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((self.server_ip, self.server_port))
self.make_call(client_socket)
client_socket.close()
def make_call(self, client_socket):
while True:
message = input("我:")
client_socket.send(message.encode())
response = client_socket.recv(1024)
print("对方:", response.decode())
```
在main函数中,创建一个服务器实例和一个客户端实例:
```python
if __name__ == "__main__":
server_ip = "127.0.0.1"
server_port = 12345
server = Server(server_ip, server_port)
client = Client(server_ip, server_port)
server_thread = threading.Thread(target=server.start)
client_thread = threading.Thread(target=client.start)
server_thread.start()
client_thread.start()
server_thread.join()
client_thread.join()
```
上述代码实现了一个非常简易的基于Socket的语音通话系统。服务器端监听客户端连接并接收通话,客户端可以主动拨打电话并进行通话。当通话建立后,双方可以通过命令行输入消息进行通话。注意该实例仅支持单一对话,不能同时支持多个通话。如果需要更完整的语音通话系统,可能需要使用更高级的库或框架进行开发。