我正在尝试通过套接字编程连接两个Android设备。这些设备在同一网络中,因此一个将充当服务器,另一个将充当客户端。
这是我的服务器代码:
public class WhiteServer extends AsyncTask<Integer,String,String> {
private View root;
public WhiteServer(View view){
root = view;
}
@Override
protected String doInBackground(Integer... params) {
try {
ServerSocket serverSocket = new ServerSocket(params[0]);
publishProgress("Sever is active on portNumber "+params[0]);
Socket s = serverSocket.accept();
publishProgress("Connected client is"+s.getRemoteSocketAddress());
} catch (IOException e) {
publishProgress(e.toString());
}
return "";
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Toast.makeText(root.getContext(),"Done",Toast.LENGTH_LONG).show();
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
TextView status = (TextView) root.findViewById(R.id.status);
status.setText(values[0]);
}
}
这是我的客户代码:
public class Light extends AsyncTask<Integer,String,String> {
private String ipAddress;
private View view;
public Light(String ip,View v){
ipAddress = ip;
view = v;
}
@Override
protected String doInBackground(Integer... params) {
try{
Socket client = new Socket(ipAddress,params[0]);
publishProgress("Connected to server on port "+client.getLocalPort());
}catch (Exception e){
publishProgress(e.toString());
}
return "";
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
Toast.makeText(view.getContext(),values[0],Toast.LENGTH_LONG).show();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
Toast.makeText(view.getContext(),"Done",Toast.LENGTH_LONG).show();
}
}
我在端口 1028 中注册了服务器,并且正在侦听端口 1028 。 由于两个设备都连接相同,因此 HostName 对于它们都是相同的。 当输入服务器主机名和端口(1028)并单击时,它会显示:
java.netConnectException:拒绝连接
它们也是两个不同的应用程序。我能知道怎么解决这个问题吗?