python实现socket网络通信

server:
socket-server

client:
socket-client

server:
1. traceback():跟踪异常返回信息
2. s=socket.socket(),创建socket,AF_INET定义domain为ipv4,SOCK_DGRAM定义了socket的type。
3. setsockopt:让socket允许地址重用,当定义多个socket时,可以将多个socket绑定到一个host与port。
4. 绑定host与port,这里实验时host为字符串,port为数字即可
5. try/except:try正常执行则不执行except,否则执行except
6. raise:自定义异常
7. recvfrom与sendto函数,server从clien获取数据以及发送数据到client,client的地址是可变的,每次server收到message重新获取

client:
1. sys.argv[1],sys.argv[2]从命令行获取参数。sys.argv[0],当前执行的模块名
2. 创建socket,调用connect函数,与server进行通信,host与port需要为server的host和port
3. sendall()发送message到server
4. recv()从server获取消息

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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* [基于pythonsocket通信](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 ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值