Java android中的客户机服务器
几天来,我一直在尝试创建一个应用程序客户端服务器,两者都在android上,运行在同一台机器上。。。。 我使用了各种各样的显示功能来显示客户端和服务器的状态……经过努力,我成功地将两者连接起来,这并不难做到 我面临的一个大问题是如何将数据从客户端发送到服务器 我使用了一个Java android中的客户机服务器,java,android,client-server,Java,Android,Client Server,几天来,我一直在尝试创建一个应用程序客户端服务器,两者都在android上,运行在同一台机器上。。。。 我使用了各种各样的显示功能来显示客户端和服务器的状态……经过努力,我成功地将两者连接起来,这并不难做到 我面临的一个大问题是如何将数据从客户端发送到服务器 我使用了一个DisplayTitle()函数在服务器端显示从客户端到达的数据,但它从不显示任何内容 我认为问题在于发送数据,因为我正在使用PrintWriter发送数据,并且我已经读到我应该刷新它以便执行此操作,否则数据将仅在缓冲区已满时发
DisplayTitle()
函数在服务器端显示从客户端到达的数据,但它从不显示任何内容
我认为问题在于发送数据,因为我正在使用PrintWriter发送数据,并且我已经读到我应该刷新它以便执行此操作,否则数据将仅在缓冲区已满时发送…我已经完成了,但仍然没有任何内容
这是我的客户代码:
这是我的服务器,在
DisplayTitle()
中,我尝试显示我应该从客户端接收的纬度和经度:
public class Server1 extends Activity {
//the ip the server is listening to
public static String SERVERIP="10.0.2.15";
Socket client;
Scanner s=null;
TextView serverStatus;
Handler handler=new Handler();
protected int ServerPort= 6000;
int longitude;
int latitude;
protected boolean isStopped = false;
private ServerSocket serverSocket=null;
private Socket clientSocket=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.server1);
Button b = (Button)findViewById(R.id.mainMenu);
serverStatus =(TextView)findViewById(R.id.server_Status);
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0){Intent i = new Intent(Server1.this, Server2.class);
startActivity(i);}});
Thread fst=new Thread(new ServerThread());
fst.start();
// MultiThreadedServer server = new MultiThreadedServer(6000);
// new Thread(server).start();
}
public class ServerThread implements Runnable{
public void run(){
try{
InetSocketAddress serverAddr =new InetSocketAddress(SERVERIP,6000);
serverSocket = new ServerSocket();
serverSocket.bind(serverAddr);
handler.post(new Runnable(){public void run() {
serverStatus.setText("wait for clients");
}});
while(true){
//accept for incoming clients
client= serverSocket.accept();
handler.post(new Runnable(){public void run() {
serverStatus.setText("Connected.");
}});
try{
s=new Scanner(new BufferedReader(new InputStreamReader(client.getInputStream())));
while(s.hasNext()){
longitude=Integer.parseInt(s.next());
System.out.println(longitude);
latitude=Integer.parseInt(s.next());
System.out.println(latitude);
// db.insertData2(longitude,latitude);
handler.post(new Runnable() {
public void run() {
DisplayTitle(longitude,latitude);
}
});
}
break;
}
catch(Exception e)
{
handler.post(new Runnable(){
public void run(){
serverStatus.setText("Connection interrupted!!");
}
});
e.printStackTrace();
}
}
}
catch(Exception e)
{
handler.post(new Runnable()
{
public void run(){
serverStatus.setText("Error");
}
});
e.printStackTrace();
}
}
}
public void DisplayTitle(int longitude,int latitude)
{
Toast.makeText(this,
"longitude: " + longitude +"\n" +
"latitude: " + latitude +"\n" ,
Toast.LENGTH_LONG).show();
}
}
如果有人知道我做错了什么,请告诉我!我在这里了解更多详细信息。如果您只是想查看在客户端或服务器中发送的数据,使用调试输出显示您正在接收数据有什么错?您可以使用logcat进行此操作。接收或发送数据时,只需将数据打印到logcat即可
Log.d(string, string);
相信我,我已经用过了所有的东西…其他地方是问题所在…我不知道在哪里!!!即使我使用log()或System.out.println(),它也不会在logcat中显示任何内容……谢谢!哦,等等,我知道你现在在哪里把结果打印到屏幕上了。我错过了你的系统。我将再次更仔细地研究这一点。我以为你根本没有打印出来,想知道你怎么能看到你实际上收到了数据。我想我误解了这个问题。哈哈,谢谢!当我有机会的时候,我会进一步研究这个问题。我将不得不等到我回家(目前正在工作)。也许有人会在那之前回答,但如果没有。我应该可以在这里帮助您。好的……我等一下,反正我没什么可做的:)……谢谢,非常感谢:)您是否使用远程登录会话中的控制台重定向了端口,例如redir add tcp:xxxx:yyyy?如果没有,那么这就是你的问题。看看我对一个类似问题的回答,它应该会有帮助是的是的……我已经这样做了……我成功地将它们连接起来……问题是发送数据:)我知道那篇帖子……我已经做了里面的所有事情或任何其他来自互联网的帖子:)))…Thx
Log.d(string, string);