我正在尝试在我的Android手机和我的Raspberry Pi之间建立TCP连接.应该很容易,事实证明不是吗?所以我开始用ServerSocket编写一个简单的服务器.它没有工作,所以我减少了代码,直到我得到这个不起作用的一块:
try
{
String wifiip = wifiIpAddress(this);
Log.v("SERVER", wifiip);
ServerSocket serverSocket = new ServerSocket();
serverSocket.setReuseAddress(true);
serverSocket.bind(new InetSocketAddress(wifiip, 4117));
}catch (Exception ex)
{
ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
(代码位于我的MainActivity中的onCreate方法,该方法由AndroidStudio创建)
我也尝试用这种方法创建ServerSocket但没有成功.
ServerSocket serverSocket = new ServerSocket(4117);
Run Code Online (Sandbox Code Playgroud)
方法wifiIpAddress取自这里:https://stackoverflow.com/a/18638588/2394967 ,工作得很好.
在AndroidManifest.xml中
<manifest ...>
<uses-sdk android:targetSdkVersion="21"></uses-sdk>
<uses-permission android:name="ANDROID.PERMISSION.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
...
</manifest>
Run Code Online (Sandbox Code Playgroud)
也许有用的信息:
logcat的
java.net.SocketException: socket failed: EACCES (Permission denied)
W/System.err? at libcore.io.IoBridge.socket(IoBridge.java:632)
W/System.err? at java.net.PlainSocketImpl.create(PlainSocketImpl.java:198)
W/System.err? at java.net.PlainServerSocketImpl.create(PlainServerSocketImpl.java:38)
W/System.err? at …Run Code Online (Sandbox Code Playgroud)