这是客户端源代码: 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(); } } }
private static final String HOST = "192.168.0.4"; 你主机地址用的是内网地址……外网无法识别的 用公共ip应该可以,或者要在网关弄映射。
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();
}
}
}
你主机地址用的是内网地址……外网无法识别的
用公共ip应该可以,或者要在网关弄映射。
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也行