导航

    • 登录
    • 搜索
    • 版块
    • 产品
    • 教程
    • 论坛
    • 淘宝
    1. 主页
    2. wsgr
    3. 楼层
    W
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 帖子
    • 楼层
    • 最佳
    • 群组

    wsgr 发布的帖子

    • RE: Socket无法接受数据,但可以发送数据

      那java换成python呢
      openmv的HOST需要改成运行python代码的ip

      import 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()
      
      发布在 OpenMV Cam
      W
      wsgr
    • RE: Socket无法接受数据,但可以发送数据

      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();
              }
      
          }
      }
      

      结果
      0_1528192319283_967dbffc-f74e-4885-b169-82d5e8e690bc-image.png
      麻烦你了。

      发布在 OpenMV Cam
      W
      wsgr
    • RE: Socket无法接受数据,但可以发送数据

      那现在这个问题是什么情况呢?

      发布在 OpenMV Cam
      W
      wsgr
    • RE: Socket无法接受数据,但可以发送数据

      recv函数存在bug

      这是我在国外OpenMV论坛看到的消息,recv函数存在bug,导致上层封装会认为接收到的数据为0 bytes,导致无法正常获得数据,并且他提供了固件升级的压缩包。
      OpenMV论坛帖子
      0_1528172234849_6561e78d-f9a1-4898-bb10-90a364c994a9-image.png

      发布在 OpenMV Cam
      W
      wsgr
    • Socket无法接受数据,但可以发送数据

      通过wifi拓展版连接上了wifi,并且通过socket发送数据给其他电脑成功,但是通过socket.read(1024)方法,一直无法获取数据。
      图中的b' '就是打印的数据。
      0_1528115246632_3ed5598d-f0a3-43b2-bea7-d6ad41603993-image.png
      0_1528115284316_b8043611-f9da-4223-9b10-98f46a1e4518-image.png

      发布在 OpenMV Cam
      W
      wsgr