添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

项目需要写完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-&gt;Create(portNo, SOCK_STREAM, FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, strIPaddress)) { int nErrorCode = m_PlantMessage-&gt;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...