项目需要写完demo,测试一下Android下面能否正常运行,尝试了几次都不正常,后面跟踪过程十分痛苦,最后经过不停的打印Log定位到居然是不能创建socket,SOCKET cs = ::socket(PF_INET, SOCK_STREAM, 0); 始终返回-1。
查了一下,原来是需要在AndroidManifest.xml里面需要加一行。
<uses-permission android:name="android.permission.INTERNET" /> //需要网络权限
加上以上代码后,再次运行,完美解决问题。
记得以前也碰到过这个问题,这次又碰到还跟了这么久,所以把记录一下吧
一直失败,原理,socket要调用全局初始化 if (!m_PlantMessage->Create(portNo, SOCK_STREAM, FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, strIPaddress)) { int nErrorCode = m_PlantMessage->GetLas...
<br /> 今天写了一个操作套接字的类,该类继承了CSocket类。调用Create函数时调用失败,发现原因是没有进行Winsock的启动:<br />到MSDN上搜了一下,搜到了以下代码:<br /> <br /> WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsa
最近接了一个第三方的C库。是直接在native层创建socket通信的。之前只了解java层的阻塞模式socket。于是初看到c端的socket写法非常困惑。最后发现是线程模型不一样,c端socket类似于 Java端的NIO(非阻塞模式)。首先是File Description,简写FD,它是Linux特有的东西,类似于windows的句柄Linux实现非阻塞式Socket靠的是一个struct...