马上就要中秋了,7+3=8有点伤不起啊,一直感到很颓废,这两个月也没有怎么更新过博客,也不知道该怎么写,不知道写什么,最近一个小项目,需要用到socket通信,和C#客户端。,这种需求用到的不多,手机做Socket服务器,这种需求也用的不多。所以,就写点关于socket通信自己的一点心得吧!



第一点:别忘了在manifest文件里面加访问网络权限

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

第二点:启动服务器,进行监听

new Thread(new SocketServerRun()).start();    }    class SocketServerRun implements Runnable {@Overridepublic void run() {try {ServerSocket ss = new ServerSocket(Constant.LISTEN_PORT);while (true) {Socket s = ss.accept();br = new BufferedReader(new InputStreamReader(s.getInputStream() , "utf-8"));String strContent;if ((strContent = br.readLine()) != null ) {Message message = new Message();    message.obj = strContent;    mHandler.sendMessage(message);}        br.close();    s.close();}} catch (IOException e) {e.printStackTrace();}}        }

启动一个线程进行监听,不要在主线程(UI线程)进行网络操作,你知道的,有时候如果网络不好或者其他原因造成5秒的阻塞,那就ANR了。

  

ServerSocket ss = new ServerSocket(Constant.LISTEN_PORT);
启动一个ServerSocket监听一个端口号:如666、5558等等。

然后使用ServerSocket的accept()方法,该方法使server端程序一直处于等待状态,直到捕获到一个来自Client端的请求,然后返回用于和改Client通信的Socket对象s。直到server程序关闭,Client和Server端就可以进行读写操作了。在上面的代码中,只进行了写入操作。当然,也可以用以下语句进行写出操作:

PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream(), "utf-8")),true);      out.println(str); 

这是服务器端,客户端呢,相对来说更简单:

Socket socket = null;String message = mEditText.getText().toString() + "\r\n"; try {//创建Socketsocket = new Socket("192.168.1.16", 8091); //向服务器发送消息PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);      out.println(message); //接收来自服务器的消息BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String msg = br.readLine(); 

创建Socket,通过IP地址和端口号对服务器端建立连接。然后进行通信。

第三点:关闭资源

像创建的BufferedReader、PrintWriter、包括socket这些资源,一定要记得关闭。

//关闭流out.close();br.close();//关闭Socketsocket.close(); 

` 好吧,今天就写到这吧。



更多相关文章

  1. 万字长文带你了解最常用的开源 Squid 代理服务器
  2. Nginx系列教程(一)| 手把手教你在Linux环境下搭建Nginx服务
  3. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  4. Android推送通知的实现--采用MQTT协议实现Android消息推送
  5. Android(安卓)系统Handler用法简介
  6. u3d与android通信1
  7. android与Web服务器交互时的cookie使用-兼谈大众点评数据获得(原
  8. Android拾萃 - RxJava5种响应类型的区别和背压(三)
  9. Android客户端与服务器之间的通信

随机推荐

  1. 去掉WebView中的白色背景
  2. Android(java)学习笔记115:Android(安卓)Inp
  3. 【Android】Android(安卓)手机连接 Win7
  4. 删除Android Studio中的工作空间(project)
  5. Android 开发中涉及到的设计模式
  6. Eclipse开发简易的Android服务器
  7. Android添加ButterKnife时报错Error:(2,
  8. Android 自定义ToneGenerator
  9. android AppWidget 支持ListView
  10. Android中获取文件路径的方法总结及对照