Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从应用程序到Java服务器的Java套接字连接_Java_Android_Android Studio - Fatal编程技术网

从应用程序到Java服务器的Java套接字连接

从应用程序到Java服务器的Java套接字连接,java,android,android-studio,Java,Android,Android Studio,我正在设置聊天应用程序。我有一个用java编写的带有socket的服务器,它完美地连接到java中的示例代码。但是,当我在应用程序上使用android studio尝试完全相同的代码时,由于某些原因,它不起作用 我试着在应用程序之外用代码运行它,结果成功了。我已获得上的用户权限,因此它可以连接到internet。我试着连接到控制台上的服务器,它成功了 客户: 类客户端实现可运行{ 自由港国际酒店; @凌驾 公开募捐{ connect(); } 专用void connect(){ System.o

我正在设置聊天应用程序。我有一个用java编写的带有socket的服务器,它完美地连接到java中的示例代码。但是,当我在应用程序上使用android studio尝试完全相同的代码时,由于某些原因,它不起作用

我试着在应用程序之外用代码运行它,结果成功了。我已获得上的用户权限,因此它可以连接到internet。我试着连接到控制台上的服务器,它成功了

客户:

类客户端实现可运行{
自由港国际酒店;
@凌驾
公开募捐{
connect();
}
专用void connect(){
System.out.println(“连接”);
试一试{
套接字=新套接字(“localhost”,1336);
System.out.println(“已连接”);
DataInputStream DataInputStream=新的DataInputStream(socket.getInputStream());
freePort=dataInputStream.readInt();
系统输出打印LN(自由港);
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
服务器:


导入java.io.DataInputStream;
导入java.io.DataOutputStream;
导入java.io.IOException;
导入java.net.ServerSocket;
导入java.net.Socket;
导入java.util.ArrayList;
公共类声明服务器{
private int numberOfClients=0;
DeclarationServer(){
试一试{
ServerSocket ServerSocket=新的ServerSocket(1336);
while(true){
System.out.println(serverSocket.getLocalPort()+“_uu”+serverSocket.getLocalSocketAddress());
Socket=serverSocket.accept();
System.out.println(socket.getLocalSocketAddress());
DataInputStream DataInputStream=新的DataInputStream(socket.getInputStream());
dataInputStream.readUTF();
DataOutputStream DataOutputStream=新的DataOutputStream(socket.getOutputStream());
dataOutputStream.writeInt(1339+个客户端);
dataOutputStream.flush();
dataOutputStream.close();
numberOfClients++;
}
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
错误消息:

I/System.out: Connecting
D/ActivityThread: add activity client record, r= ActivityRecord{5f45e99 token=android.os.BinderProxy@712539a {com.example.birke.testapp/com.example.birke.testapp.MainActivity}} token= android.os.BinderProxy@712539a
D/ZrHung.AppEyeUiProbe: notify runnable to start.
W/System.err: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 1336) from /:: (port 32940): connect failed: ECONNREFUSED (Connection refused)
        at libcore.io.IoBridge.connect(IoBridge.java:137)
        at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:391)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:231)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:213)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
        at java.net.Socket.connect(Socket.java:621)
        at java.net.Socket.connect(Socket.java:570)
        at java.net.Socket.<init>(Socket.java:450)
        at java.net.Socket.<init>(Socket.java:218)
W/System.err:     at com.example.birke.testapp.Client.connect(MainActivity.java:151)
        at com.example.birke.testapp.Client.run(MainActivity.java:145)
        at java.lang.Thread.run(Thread.java:784)
    Caused by: android.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
        at libcore.io.Linux.connect(Native Method)
        at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:118)
        at libcore.io.IoBridge.connectErrno(IoBridge.java:151)
        at libcore.io.IoBridge.connect(IoBridge.java:129)
        ... 12 more
I/System.out:正在连接
D/ActivityThread:添加活动客户端记录,r=ActivityRecord{5f45e99 token=android.os。BinderProxy@712539a{com.example.birke.testapp/com.example.birke.testapp.MainActivity}}token=android.os。BinderProxy@712539a
D/ZrHung.appeyuiprobe:通知runnable启动。
W/System.err:java.net.ConnectException:无法从/:(端口32940)连接到localhost/127.0.0.1(端口1336):连接失败:EconRefused(连接被拒绝)
位于libcore.io.IoBridge.connect(IoBridge.java:137)
位于java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:137)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:391)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:231)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:213)
位于java.net.socksocketimpl.connect(socksocketimpl.java:436)
位于java.net.Socket.connect(Socket.java:621)
位于java.net.Socket.connect(Socket.java:570)
位于java.net.Socket。(Socket.java:450)
位于java.net.Socket(Socket.java:218)
W/System.err:at com.example.birke.testapp.Client.connect(MainActivity.java:151)
位于com.example.birke.testapp.Client.run(MainActivity.java:145)
运行(Thread.java:784)
原因:android.system.ErrnoException:连接失败:EconRefused(连接被拒绝)
位于libcore.io.Linux.connect(本机方法)
在libcore.io.BlockGuardOs.connect上(BlockGuardOs.java:118)
在libcore.io.IoBridge.ConnecterNo(IoBridge.java:151)中
位于libcore.io.IoBridge.connect(IoBridge.java:129)
... 还有12个
查看这一行

无法从/:(端口)连接到localhost/127.0.0.1(端口1336) 32940):连接失败:ECONREFUSSED(连接被拒绝)

这意味着,本地主机很可能拒绝连接,服务/服务器没有在特定端口上运行。如果服务器在同一个android设备上运行,则可以连接到本地主机

解决方案

在初始化
Socket
时,传递服务器的IP(如果客户端和服务器都在同一网络中,则为私有IP,否则为公共IP),而不是
localhost

Socket socket = new Socket("192.168.XXX.XXX",1336);

10.0.2.2应该是您从应用程序连接到的端口。