怎么可能有地域限制,你用的tcp还是udp? 看是不是丢包了

解决方案 »

  1.   

    描述不清楚。。先看看网络是不是通的。ping 一下你要通信的地址,telnet一下你的端口,tracert 一下你的连接路径看看问题 出在那里。。只要网络通,应该 不会有什么问题
      

  2.   

    怎么可能有地域限制,你用的tcp还是udp? 看是不是丢包了用的tcp,又测试了一下,发现只有连上我家电脑的 wifi 才能连接成功,脸上别人家的wifi也连不上。。
      

  3.   

    这是客户端源代码:
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.Socket;
    import android.app.Service;
    import android.content.Intent;
    import android.os.IBinder;public class SendService extends Service {
    private static final String HOST = "192.168.0.4";  
        private static final int PORT = 4567;  
        private Socket socket = null;  
        private BufferedReader in = null;  
        private PrintWriter pout = null; 
        DataOutputStream dos = null;  
        private String address;
        //经纬度
        double longitude;
        double latitude;
    @Override
    public IBinder onBind(Intent intent) {

    return null;
    }
    @Override
    public void onCreate() {
    // TODO Auto-generated method stub
    super.onCreate();
    } @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
             //取值
     address = intent.getStringExtra("address");
         latitude = intent.getDoubleExtra("latitude", 0);
     longitude = intent.getDoubleExtra("longitude", 0); 
     new SendSocket().start();
    return START_NOT_STICKY;
    }

    class SendSocket extends Thread{

    public void run(){
    try{
    socket = new Socket(HOST,PORT); //客户端
    OutputStream out = socket.getOutputStream();
    /*BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out,"UTF-8"));
    bw.write("地址:"+ add + "经度:"+ longitude + "纬度:" + latitude);
    bw.close();*/
    dos = new DataOutputStream(out); 
    pout =new PrintWriter(new OutputStreamWriter(dos,"UTF-8"),true);
    pout.println("地址:"+ address + "经度:"+ longitude + "纬度:" + latitude);
    System.out.println(""+ latitude + "jingdu:" + longitude);
    pout.flush();
    pout.close();
    }catch(IOException e){
    e.printStackTrace();
    }finally{

    }
    }
    }
    }
    这是服务端源代码:
    public class Server2 {
    static StringBuffer str;
    private static final int PORT = 4567;  
    public static void main(String[] args) {
        String str2;
        try {
       // 实例化服务器套接字 设置端口号4567
     ServerSocket server = new ServerSocket(PORT);

       while (true) {
       System.out.println("accept~~");
        Socket socket = server.accept();
        System.out.println("accept~~~~");
             //
       
        BufferedReader in = new BufferedReader( new InputStreamReader(socket.getInputStream(),"UTF-8"));
        // 写字符串
            //  str.append(in.readLine());
        str2 = in.readLine();
        System.out.println(str2);
       }
      } catch (IOException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
     }
    }
      

  4.   

    private static final String HOST = "192.168.0.4";  
    你主机地址用的是内网地址……外网无法识别的
    用公共ip应该可以,或者要在网关弄映射。
      

  5.   

    你的服务端是怎么弄的?直接用eclipse运行还是用tomcat搭载运行呢?以前我也弄过一次,同一个局域网内,电脑做服务端,手机做客户端,无线传输老是不通
      

  6.   

    192.168……经典内网地址
    REC 1918留出了3块IP地址空间(1个A类地址段,16个B类地址段,256个C类地址段)作为私有的内部使用的地址。在这个范围内的IP地址不能被路由到Internet骨干网上;Internet路由器将丢弃该私有地址。 
    这三段为:
    A类 10.0.0.0到10.255.255.255 
    B类 172.16.0.0到172.31.255.255 
    C类 192.168.0.0到192.168.255.255
    ……
    自己百度下192.168也行
      

  7.   

    不会的,没有限制,只要网络通了就可以...你自己检查下,ping一下网络...
      

  8.   

    因为你的tcp只是局域网内部的通信,然后连接到其他wifi就等于跨了局域网,需要使用互联网上IP而不是局域网IP