python实现socket双向通信
时间: 2023-10-30 10:05:11 浏览: 38
Python通过Socket套接字实现双向通信。Socket套接字是一种编程接口,对TCP/IP的封装,它提供了网络通信的能力。在Python中,可以使用socket模块来创建和使用Socket套接字。
首先,需要导入socket模块。然后,使用socket.socket()函数创建一个Socket对象,指定地址族和套接字类型。对于TCP/IP通信,常用的是AF_INET作为地址族,SOCK_STREAM作为套接字类型。接着,使用Socket对象的connect()方法连接服务器,指定服务器的IP地址和端口号。
在连接成功后,可以启动一个线程用于监听来自服务器的信息,使用recv()方法接收服务器发送的数据并进行解码。然后,可以通过send()方法发送数据给服务器。可以使用input()函数获取用户输入的内容,然后使用send()方法将输入的内容编码并发送给服务器。可以通过判断输入的内容是否为"exit"来退出通信。
需要注意的是,在进行通信前,需要确保服务器已经启动并且监听指定的IP地址和端口号。另外,需要根据具体需求对发送和接收的数据进行编码和解码操作,可以使用utf-8编码。
下面是一个示例代码,演示了如何使用Python实现Socket双向通信:
```python
import socket
import threading
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建Socket连接
sock.connect(('127.0.0.1', 8001)) # 连接服务器
def listen_server_txt():
while True:
data = sock.recv(4096).decode('utf-8') # 接收服务器发送的信息并解码
print('接收到服务端发送的信息:%s' % data)
if __name__ == '__main__':
listen_server = threading.Thread(target=listen_server_txt) # 创建一个线程监听来自服务器的信息
listen_server.start()
while True:
input_str = input('请输入发送的内容:')
if input_str == 'exit':
sock.send(input_str.encode("utf-8")) # 发送退出指令给服务器
sock.close() # 关闭Socket连接
break
if not input_str:
print("发送内容不得为空")
continue
sock.send(input_str.encode("utf-8")) # 发送输入的内容给服务器
```
这段代码中,首先创建一个Socket对象,指定服务器的IP地址和端口号进行连接。然后,启动一个线程用于监听来自服务器的信息。接着,通过输入内容来发送数据给服务器,可以通过输入"exit"来退出通信。
请根据实际情况和需求,修改代码中的IP地址和端口号,以及编码和解码方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Python Socket通讯](https://blog.csdn.net/qq_44278941/article/details/120850506)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [基于python的socket通信](https://blog.csdn.net/m0_62875642/article/details/128488374)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]