TCP/IP Android设备连接问题
我有一个tcp/ip应用程序,客户端'A'获取它的坐标并将它们发送到我的电脑上运行的服务器。我使用本地IPS等,这是运行良好,但我今天早上出来,然后我和我的tp-link路由器和局域网问题,所以我重新安装我的路由器和所有连接(Wi-Fi)备份并跑步。但是,现在当我尝试运行我的应用程序时,它将无法与我的设备一起使用。TCP/IP Android设备连接问题
如果我在模拟器中运行它(我只是有一个用于测试的字符串)它的作品,我知道,这是因为无论是服务器和仿真器都在同一台机器上。我的IP是正确的,它是服务器运行的机器的...我试图教自己这个技术,并为大学做一个项目,我不断遇到像这样的大量头痛。我已经在下面发布了我的客户端和服务器代码,有没有人可能有任何想法?路由器上的所有设置都是相同的,我确定这只是通过局域网连接,我不必转发任何端口?
客户端
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class Child extends Activity implements LocationListener {
private Socket s;
private PrintWriter p;
public static double latitude;
public static double longitude;
String coordinates;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.child);
LocationManager mlocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocationListener = new MyLocationListener();
mlocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
mlocationListener);
String hello = "hello"; //FOR TESTING PURPOSES
Transmit (hello);
Log.d("test", "test");
}
public class MyLocationListener implements LocationListener {
public void onProviderDisabled(String provider) {
Toast.makeText(getApplicationContext(), "Gps Disabled",
Toast.LENGTH_SHORT).show();
}
public void onProviderEnabled(String provider) {
Toast.makeText(getApplicationContext(), "Gps Enabled",
Toast.LENGTH_SHORT).show();
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
latitude = location.getLatitude();
longitude = location.getLongitude();
coordinates = ("TESTING " + latitude + longitude);
//Transmit(coordinates);
}
}
private void Transmit(final String message) {
Thread trans = new Thread(new Runnable() {
public void run() {
Log.d("TRANSMIT", "CALLED");
// TODO Auto-generated method stub
try {
s = new Socket("192.168.3.103", 1111); // connect to
// server
Log.d("CONNECTED", "Connected");
DataOutputStream _OutPut = new DataOutputStream(
s.getOutputStream());
_OutPut.writeBytes(message + "\n");
_OutPut.flush();
_OutPut.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
trans.start();
}
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}
服务器
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class TCPServer {
public static void main(String[] args) throws Exception {
Socket s;
ServerSocket ss = new ServerSocket(1111);
System.out.println("Server started. Listening to the port 2001");
System.out.println("Server: waiting for connection ..");
while (true) {
try {
s = ss.accept();
if (s != null) {
InputStream fromChild = s.getInputStream();
while (s.isConnected()) {
System.out.println("Child Connected");
Scanner r = new Scanner(fromChild);
String location;
location = r.nextLine();
System.out.println(location);
}
}
} catch (IOException ex) {
System.out.println("Problem in message reading");
}
}
}
}
所以,请,如果有人可以帮助或扔在有些情况我光会非常感激,因为我不能开发任何进一步,直到我排序这个问题。
问候, 加里
这当然听起来像手机和服务器之间的连接问题。
仔细检查服务器和手机上的IP地址,并确保他们在同一个子网(192.168.3.X),如果没有,那么你需要建立一个转发规则路由器。
-
您还可以通过运行在服务器框中一个基本的HTML服务器验证连接和手机上的浏览器指向服务器。该框的Apache Tomcat很容易启动,并且已经配置了一个仪表板应用程序,可以在启动时运行。您也可以在同一网络上的另一台计算机上测试此功能,以排除您的代码和手机。从那里
http://developer.android.com/tools/devices/emulator.html#emulatornetworking
的摘录:
阅读本
网络地址说明 10.0.2.1路由器/网关地址
10.0.2.2特殊别名您主机回送接口(即开发机器上的127.0.0.1)
10.0.2.3第一DNS服务器
10.0.2.4/10.0.2.5/10.0.2.6可选第二,第三和第四DNS服务器(如果有的话)
10.0.2.15的仿真设备自身的网络/以太网接口
127.0.0。1模拟器件自身的环回接口
基本上,如果你在本地运行的服务器,你应该尝试从仿真器击中10.0.2.2地址 ---
干杯,
更新您的问题标题有摘要指明你的问题 – 2013-03-08 11:47:44
done..can everyone help me? – 2013-03-08 12:20:04
http://developer.android.com/tools/devices/emulator.html仔细阅读模拟器网络和网络地址空间 – 2013-03-08 22:07:17