我正在尝试让我的Android应用程序通过一个小型网络将Telnet命令发送到另一台设备,每当我声明DatagramSocket时,它都会抛出一个SocketException:地址系列不受协议支持。以下是我的代码:
try {
addr = InetAddress.getByName(ipAddress);
sock = new DatagramSocket(); //SocketException created here
//first message - cmd
length = cmd.length();
message = cmd.getBytes();
packet = new DatagramPacket(message, length, addr, portAddr);
sock.send(packet);
//second message - highCMD
length = highCMD.length();
message = highCMD.getBytes();
packet = new DatagramPacket(message, length, addr, portAddr);
sock.send(packet);
sock.close();
} catch (SocketException e) {
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(v.getContext()).create();
alertDialog.setTitle("Send High CMD Error!");
alertDialog.setMessage("SocketException");
alertDialog.show();
} catch (IOException e){
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(v.getContext()).create();
alertDialog.setTitle("Send High CMD Error!");
alertDialog.setMessage("IOException");
alertDialog.show();
}
}
我考虑过但可能没有成功的可能解决方案:
其他重要信息:
更新时间:2/9/11
我已将此代码更改为以下内容,但我仍然遇到异常:
try {
addr = InetAddress.getByName(ipAddress);
socketAddress = new InetSocketAddress(addr, portAddr);
sock = new Socket();
sock.connect(socketAddress);
sock.close();
} catch (SocketException e) {
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(v.getContext()).create();
alertDialog.setTitle("Send High CMD Error!");
alertDialog.setMessage("SocketException" + e.getMessage());
alertDialog.show();
}
来自异常的消息显示“权限被拒绝”。这是否意味着我的设备阻止套接字连接?
答案 0 :(得分:3)
你用错误的方式编码了这个。 Telnet使用TCP,它使用流(面向连接)套接字,而不是UDP使用的数据报套接字。
搜索tcp示例。