zoukankan      html  css  js  c++  java
  • Android学习——写个小实例

    学了不少基础的知识,拼一个完整点的小例子吧!

    目标:完成一个与PC机互发消息的聊天程序。

     

    首先要先试通,通讯机制。在多机互联中最常用的是网络,而网络编程中,底层的通讯机制也就是Socket。我们就想试一试用Socket来实现双机对联。先试通Socket通讯,PC机当服务器,手机当客户端。

    通常,我们写PCSocket程序时,了解到,服务器端是采用Socket监听程序来监听网络的某个端口,当客户端连入时,服务器监听程序返回一个Socket对象来收发消息。客户端要连接到服务器端时,需要知道对方的IP和端口。在本实例中,服务器端我们采用C#来实现。

     

    C#服务端

    l  监听服务:

    IPAddress ip = IPAddress.Parse("127.0.0.1");

    myList = new TcpListener(ip,8001); //8001为端口号

    myList.Start();

    l  开始监听:

    TcpClient client = myList.AcceptTcpClient(); //程序将会卡住,是同步执行不是异步。一旦客户端接入时,创建对象,继续执行。

    l  发送消息:

    StreamWriter writer = new StreamWriter(client.GetStream());

    writer.Write(Context + (char)13 + (char)10);

    writer.Flush();

    注意:在发送的消息内容中,结尾必须要加上回车换行。如是不加,Android中接收会出错(会报Bad package)。具体原来我也不清楚L

    l  接收消息:

    byte[] readBuffer = new byte[read_BUFFER_SIZE];

    this.client.GetStream().BeginRead(readBuffer, 0, read_BUFFER_SIZE, new AsyncCallback(StreamReceiver), null);

    int BytesRead = client.GetStream().EndRead(ar);

    retString= Encoding.ASCII.GetString(readBuffer, 0, BytesRead - 1);

     

    Android客户端

    l  连接服务

    Socket socket = new Socket("10.0.2.2", 8001);

    在模拟器中,连接到PC端采用的IP"10.0.2.2",端口用服务器端监听的端口。

    l  发送消息

    DataOutputStream dos=new DataOutputStream(socket.getOutputStream());

    dos.write(str.getBytes());

    l  接收消息

    BufferedReader mReader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"),8192);

    String strRet = mReader.readLine(); //同样,执行读时,程序也会卡住,等待信息。

    l  断开连接

    socket.shutdownInput();         //需要调此方法,不然mReader.readLine还傻傻挂着。

    socket.shutdownOutput();

    socket.close();

     

    在编写通讯程序时,由于读消息都是同步的,所以一般我们会采用线程来处理。

    这章就写到这里,简单的通讯也就跑起来了,下次再把界面整得好看一点。

     

     

    实例下载:MyTalk.rar

  • 相关阅读:
    ip netns
    PPT动手动脑1
    暑假作业日总结
    暑假作业日总结
    课前测试总结
    暑假作业日总结
    大二上每日总结
    暑假作业日总结
    大二上每日总结
    暑假作业日总结
  • 原文地址:https://www.cnblogs.com/zjfstudio/p/3764721.html
Copyright © 2011-2022 走看看