我正在开发一个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;
}
答案 0 :(得分:0)
为了让你的代码几乎按照原样发送给自己,请执行以下操作:
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));