手机与PC的网络协议(1)


现在我们用一台电脑做服务器,一部手机做客户端,来实现手机与电脑之间的通信啦。首先,异曲同工,在手机上建立客户端与在电脑上是差不多的,首先我们现在电脑上面建立服务器如下:

  1. package 手机与PC端通信;   
  2.    
  3. import java.io.IOException;   
  4.    
  5.    
  6.    
  7.    
  8. import java.net.ServerSocket;   
  9. import java.net.Socket;   
  10.    
  11.    
  12.    
  13. public class Server {   
  14.        
  15.     public void setup(int port){   
  16.            
  17.             try {   
  18.                 //创建服务器   
  19.                 ServerSocket host=new ServerSocket(port);   
  20.                 System.out.println("通信端口"+port+"成功开启");   
  21.                 while(true){   
  22.                     //等待客户端访问   
  23.                     Socket socket=host.accept();   
  24.                     System.out.println("有人访问了");   
  25.                     //把跟客户端交流的事情交给线程处理   
  26.                     ServerThread st = new ServerThread(socket);   
  27.                     //开启线程                     
  28.                     st.start();   
  29.    
  30.                 }   
  31.             } catch (IOException e) {   
  32.                 // TODO Auto-generated catch block   
  33.                 e.printStackTrace();   
  34.             }   
  35.                
  36.            
  37.     }   
  38.     public static void main(String[] args){   
  39.         //传入端口号   
  40.         new Server().setup(8888);   
  41.     }   
  42.    
  43. }   

接下来建立线程来处理socket得到的输入流以及输出流:

  1. package 手机与PC端通信;   
  2.    
  3. import java.io.DataInputStream;   
  4.    
  5. import java.io.DataOutputStream;   
  6. import java.io.IOException;   
  7. import java.io.InputStream;   
  8. import java.io.OutputStream;   
  9. import java.net.Socket;   
  10.    
  11. public class ServerThread extends Thread {   
  12.     private Socket socket;   
  13.     private DataOutputStream  dos;   
  14.     public ServerThread(Socket socket){   
  15.         this.socket=socket;   
  16.     }   
  17.        
  18.    
  19.     public void run(){   
  20.         //得到网络连接socket得到的输出输入流   
  21.         try {   
  22.             //输入流   
  23.             InputStream input=socket.getInputStream();   
  24.                
  25.             DataInputStream dis=new DataInputStream(input);   
  26.             //得到客户端的输出流   
  27.             dos=new DataOutputStream(socket.getOutputStream());   
  28.             //读取客户端发到服务端的字节   
  29.             while(true){   
  30.                    int msgType=dis.readInt();   
  31.                    
  32.                     int len=dis.readInt();   
  33.                     byte[] bytes=new byte[len];   
  34.                     dis.readFully(bytes);   
  35.                     String content=new String(bytes,"GB2312");   
  36.                     System.out.println("客户端说:"+content);   
  37.                        
  38.                        
  39.                         //这里是发到客户端的   
  40.                         String replyString = "服务器收到了("+content+")";   
  41.                         bytes = replyString.getBytes("GB2312");   
  42.                            
  43.                         //写进是文字  1   
  44.                         dos.writeInt(1);   
  45.                         //输出流写进字节长度   
  46.                         dos.writeInt(bytes.length);   
  47.                         //写进字节   
  48.                         dos.write(bytes);   
  49.                         //刷新   
  50.                         dos.flush();   
  51.                     }   
  52.                    
  53.                
  54.                
  55.                
  56.         } catch (IOException e) {   
  57.             // TODO Auto-generated catch block   
  58.             e.printStackTrace();   
  59.         }   
  60.     }   
  61.    
  62. }   

这些内容在上节中都已经讲过,这里不做过多阐述

接下来就是重点内容啦,就是在Android中建立客户端,这里我们要使用带安卓插件的eclipse来编写

首先处理界面,我大概定义了一个textview来显示聊天内容,editText来进行输入框的角色,再者就是一个发送按钮,这样一个简单的聊天界面就已经完成了,如下,简洁的小界面,读者们可以自行美化界面哈:

(最后记得绑定发送按钮到指定函数哦

最后记得绑定发送按钮到指定函数哦。


相关内容