最近在通信项目中跟我的小伙伴们做了一个通信小程序,使用socket通信,Android手机作为客户端,PC作为服务器。从而实现互联操作,基本程序界面如下:
服务器界面:
客户端界面:
客户端通过输入服务器端的IP和初始密码,连接上服务器。在这里有一个难点,一直没有很好的解决,那就是关于网络的问题,当用真机测试的时候,经常会因为网速的问题,导致登录失败,如果有大神有好的建议,希望能得到赐教。关于登录的代码如下:
//通过内部类创建监听器对象
OnClickListener listener = new OnClickListener(){
public void onClick(View v){
ip=edit_ip.getText().toString().trim();//得到输入的ip地址
pwd=edit_pwd.getText().toString().trim();//得到输入的密码
if((!ip.equals(""))){//ip不为空
Toast.makeText(getApplicationContext(),"ip地址:"+ip+"密码:"+pwd,3).show();//显示ip
ManageClient.CreateClient(ip,9090);//创建客户端
msg.SetType(MsgType.LOGIN);
msg.SetContent(pwd);
ManageMsg.SendMsg(ManageClient.ops, msg);//将登录消息发送给服务器
Toast.makeText(getApplicationContext(),"输出流:"+ManageClient.ops+"消息:"+msg.getContent(),3).show();//显示客户端发送对象
t.start();
}
}
};
Thread t = new Thread(new Runnable(){
public void run() {
msg=ManageMsg.ReadMsg(ManageClient.ips);//读取登录回应消息
if(msg.getType()==MsgType.LOGIN_SUCCESS){//如果登陆成功
//实现跳转,跳转到客户端主界面
Intent intent = new Intent();
intent.putExtra("msg", ""+msg.getContent());
intent.setClass(LoginActivity.this,ClientActivity.class);
startActivity(intent);
LoginActivity.this.finish();//关闭Login界面
}
}
});
通过线程来接收登陆回应的消息。
那么现在就说一下 实现的功能吧:
1.实现了定时关机/重启
2.实现播放PPT功能
关于这两个功能的具体实现我会上传代码
接下来还会继续改进,实现更多有用的功能,希望能得到很多好的建议。通过这个小项目,可以很好的理解通信协议,Socket编程,总之,确实有一定的收获。坚持做好做精它吧!