这是我的类连接并向服务器发送命令我在方法中尝试单独的连接代码 但是当我测试(SocketConnect)方法时,我发现它不起作用。 我的代码
public class ConnAndSend {
static Socket socket = null;
static void SendCommand(String cmnd) {
DataOutputStream dataOutputStream = null;
try {
dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataOutputStream.writeUTF(cmnd);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if (dataOutputStream != null){
try {
dataOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
};
}
// method to connect to server
static void SocketConnect(String SrvrIP,int SrvrPrt) {
// Socket socket = null;
try {
socket = new Socket(SrvrIP, SrvrPrt);
} catch (IOException e) { e.printStackTrace();}
finally{
if (socket != null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
}
答案 0 :(得分:1)
删除 静态 修饰符!!
删除 静态
在您的代码中:
socket = new Socket(SrvrIP, SrvrPrt);
} catch (IOException e) { e.printStackTrace();}
finally{
if (socket != null){
try {
socket.close();
你正在finally
关闭套接字(为什么?)这也是错误的!
答案 1 :(得分:0)
您是否确定您的清单文件具有正确的权限?
<uses-permission android:name="android.permission.INTERNET" />
答案 2 :(得分:0)
在你有机会使用它之前看起来你正在关闭套接字,或者之前你没有调用SocketConnect。你看到你如何制作插座,然后关闭它?
socket = new Socket(SrvrIP, SrvrPrt);
} catch (IOException e) { e.printStackTrace();}
finally{
if (socket != null){
try {
socket.close();
您需要创建套接字,使用它在SendCommand中连接,然后关闭它。我不太确定为什么你需要保持两者分开,但我相信这是你的问题,你在使用套接字连接之前调用关闭,或者你只是没有使用套接字而SendCommand
是使用“null”连接。