Socket无法接受数据,但可以发送数据
-
通过wifi拓展版连接上了wifi,并且通过socket发送数据给其他电脑成功,但是通过socket.read(1024)方法,一直无法获取数据。
图中的b' '就是打印的数据。
-
recv函数存在bug
这是我在国外OpenMV论坛看到的消息,recv函数存在bug,导致上层封装会认为接收到的数据为0 bytes,导致无法正常获得数据,并且他提供了固件升级的压缩包。
OpenMV论坛帖子
-
这个是16年的帖子,后面的固件应该解决了
-
那现在这个问题是什么情况呢?
-
请提供可以执行的代码,否则没办法测试。
-
openmv代码,SSID和KEY需要修改成可以连接的wifi
# Connect Example # # This example shows how to connect your OpenMV Cam with a WiFi shield to the net. import network,usocket, sys, json,socket SSID='ymc' # Network SSID KEY='44661122' # Network key HOST = '192.168.191.2' # Use first available interface #192.168.199.220 PORT = 12345 # Arbitrary non-privileged port # Init wlan module and connect to network print("Trying to connect... (may take a while)...") wlan = network.WINC() wlan.connect(SSID, key=KEY, security=wlan.WPA_PSK) # We should have a valid IP now via DHCP print(wlan.ifconfig()) s = usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) s.connect([HOST, PORT]) #s.send("this is from car1") try: #一个个读数据试试 data = s.recv(100) print ("data is:",str(data)) s.close() except OSError as e: s.close() print("socket error: ", e)
java代码
import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class SocketTest { public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(12345); Socket socket = serverSocket.accept(); OutputStream outputStream = socket.getOutputStream(); outputStream.write("aaasdfsdfdsf".getBytes()); } catch (IOException e) { e.printStackTrace(); } } }
结果
麻烦你了。
-
这个程序我测试不了
-
那java换成python呢
openmv的HOST需要改成运行python代码的ipimport socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(('0.0.0.0', 12345)) s.listen(10) while True: print "serber started" client, addr = s.accept() client.send(b'aaaaa') client.close()