Android上实现TCP&UDP的客户端和服务端
2016-03-23 14:30
846 查看
activity_main.xml:
MainActivity.java:
注意:在测试的时候,可以用电脑和手机之间通讯,也就是一方作为服务端,另一方作为客户端。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="startTcpServer" android:onClick="startTcpServer"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="tcpClient" android:onClick="tcpClient"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="startUdpServer" android:onClick="startUdpServer"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="udpClient" android:onClick="udpClient"/> </LinearLayout>
MainActivity.java:
package com.miao.tcpandudp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void startTcpServer(View view) { new Thread(){ @Override public void run() { try{ Log.i("miao","#################################################"+"prepared"); ServerSocket server = new ServerSocket(6666); Socket socket = server.accept(); Log.i("miao", "#################################################" + "Connected"); OutputStream os = socket.getOutputStream(); InputStream is = socket.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String data = reader.readLine(); Log.i("miao","#################################################"+data); os.write("From Server:hi,I am server .\n".getBytes()); reader.close(); is.close(); os.close(); } catch (Exception e){Log.i("miao","#################################################"+"Exception");} } }.start(); } public void tcpClient(View view) { new Thread(){ @Override public void run() { try{ Log.i("miao","#########################################"+"clicked"); Socket socket = new Socket("192.168.104.1",6660); Log.i("miao","#########################################"+"Connected"); OutputStream os = socket.getOutputStream(); os.write("From Client:Hi,I am Client .\n".getBytes()); InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String data = br.readLine(); Log.i("miao","#########################################"+data); br.close(); is.close(); os.close(); } catch (Exception e){ Log.i("miao","#########################################"+"Exception"); } } }.start(); } public void startUdpServer(View view) { new Thread(){ @Override public void run() { try{ Log.i("miao","###############################################"+"prepared"); DatagramSocket ds = new DatagramSocket(5555); byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf,1024); ds.receive(dp); String data = new String(dp.getData(),0,dp.getLength()); Log.i("miao","###############################################"+data); InetAddress addr = dp.getAddress(); int port = dp.getPort(); byte[] echo = "From Server:echo..........".getBytes(); DatagramPacket dp2 = new DatagramPacket(echo,echo.length,addr,port); ds.send(dp2); ds.close(); }catch (Exception e){ Log.i("miao","###############################################"+"Exception"); } } }.start(); } public void udpClient(View view) { new Thread(){ @Override public void run() { try{ Log.i("miao","###############################################"+"prepared"); DatagramSocket ds = new DatagramSocket(); InetAddress addr = InetAddress.getByName("192.168.104.1"); String data = "From Client:Hi,I am Client ."; DatagramPacket dp = new DatagramPacket(data.getBytes(),data.length(), addr,5555); ds.send(dp); byte[] buf = new byte[1024]; DatagramPacket dp2 = new DatagramPacket(buf,1024); ds.receive(dp2); String echo = new String(dp2.getData(),0,dp2.getLength()); Log.i("miao","##########################################"+echo); ds.close(); }catch (Exception e){ Log.i("miao","###############################################"+"Exception"); } } }.start(); } }
注意:在测试的时候,可以用电脑和手机之间通讯,也就是一方作为服务端,另一方作为客户端。
相关文章推荐
- 理解HTTP幂等性
- 关于启用 HTTPS 的一些经验分享
- Xcode7 使用NSURLSession发送HTTP请求的问题
- [疯狂Java]TCP:TCP协议的概念、Socket通信、超时等待
- Android学习之网络请求库Retrofit2
- 网络扫描(一)
- HttpClient使用详解
- TCP与UDP在socket编程中的区别
- Android判断网络状态并远程获取数据
- Httperf:测试服务器能承载的最大服务!!!
- 23. XML 解析 / HTTP 请求方法 / 模拟登录 / MD5
- 22.NSURLConnection & NSRULSession 入门 / 网络请求监视 / JSON解析
- 21.HTTP原理 & Socket开发体验
- ViewPage+Volley实现动态加载网络图片广告轮播 !
- 《Metasploit魔鬼训练营》虚拟环境搭建中网络配置的一些问题
- 实例讲解虚拟机3种网络模式(桥接、nat、Host-only)
- http协议学习
- Linux学习笔记(七)-网络篇和多媒…
- 网络认证
- Tcp三次握手,四次挥手