C ++无法接收UDP-Packets(套接字)

时间:2015-09-01 11:21:42

标签: c++ sockets networking udp winsock

我正在开发一个C ++ UDP程序,它将一个字符串发送到另一个客户端并应该收到答案。

发送工作正常,但我无法接收任何数据包。我看着wireshark,我的电脑在正确的端口和正确的IP接收数据包,但我的程序似乎忽略了它们。

你有什么想法吗?

    String image2Text(String imagePath)
  {
  dataPath= Environment.getExternalStorageDirectory().toString() + "/Android/data/" + appContext.getPackageName() +  "/"; 
    File tessdata = new File(dataPath); 
   if (!tessdata.exists() || !tessdata.isDirectory())
   {
       throw new IllegalArgumentException("Data path must contain subfolder tessdata!");   
} 
     Bitmap image= BitmapFactory.decodeFile(imagePath);
  TessBaseAPI baseApi = new TessBaseAPI();
  baseApi.init(dataPath, "eng"); 

baseApi.setImage(image);
      String recognizedText = baseApi.getUTF8Text();
      baseApi.end();


      return recognizedText;
  }

2 个答案:

答案 0 :(得分:0)

为了让你的代码几乎按照原样发送给自己,请执行以下操作:

  • 改变" me"匹配"其他" ... si_me.sin_port = htons( 2000 );
  • 的端口
  • bind( sock, (SOCKADDR*)&si_me, sizeof( SOCKADDR ) );
  • 之前绑定到它... connect

答案 1 :(得分:-1)

由于UDP是面向数据报和无连接的,因此您需要使用recvfrom / sento而不是recv / send。此外,receivetimeout应设置为timeval。

struct timeval tv;
tv.tv_sec = 5;
tv.tv_usec = 0;
setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(struct timeval));