TCP与UDP的简单发送与实现(socket)
2014-08-28 10:56
525 查看
一.在android里实现网络通讯会用到如下的网络操作权限。
[html] view
plaincopy
<!--允许应用程序改变网络状态-->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<!--允许应用程序改变WIFI连接状态-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!--允许应用程序访问有关的网络信息-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--允许应用程序访问WIFI网卡的网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!--允许应用程序完全使用网络-->
<uses-permission android:name="android.permission.INTERNET"/>
二.在服务端创建一个TCP连接的监听。用于接收TCP客户端传输的数据。
[java] view
plaincopy
//在logcat中打印提示,开始监听TCP
System.out.println("Accpet TCP");
//创建ServerSocket对象,并设置端口号
ServerSocket serverSocket = new ServerSocket(1984);
//使用ServerSocket中的accpet方法开始阻塞监听1984端口
Socket socket = serverSocket.accept();
//创建InputStream对象,并从socket中获取数据
InputStream inputStream = socket.getInputStream();
//创建一个字节数组,存放读取到得数据。
byte buffer[] = new byte[1024*4];
int temp = 0;
while ((temp = inputStream.read(buffer)) != -1) {
System.out.println(new String(buffer ,0 ,temp));
}
三.创建一个TCP客户端,用于发送数据。
[java] view
plaincopy
//创建一个Socket对象,并指定服务端的IP及端口号
Socket socket = new Socket("192.168.1.32" ,1984);
//创建一个InputStream用户读取要发送的文件。
InputStream inputStream = new FileInputStream("e://a.txt");
//获取Socket的OutputStream对象用于发送数据。
OutputStream outputStream = socket.getOutputStream();
//创建一个byte类型的buffer字节数组,用于存放读取的本地文件
byte buffer[] = new byte[4*1024];
int temp = 0;
//循环读取文件
while ((temp = inputStream.read(buffer)) != -1) {
//把数据写入到OuputStream对象中
outputStream.write(buffer ,0 ,temp);
}
//发送读取的数据到服务端
outputStream.flush();
四.在服务端创建一个UDP的监听,用于接收UDP连接的数据接收
[java] view
plaincopy
//打印一个提示
System.out.println("accpet UDP");
//创建一个DatagramSocket对象,并指定监听端口。(UDP使用DatagramSocket)
DatagramSocket socket = new DatagramSocket(1985);
//创建一个byte类型的数组,用于存放接收到得数据
byte data[] = new byte[4*1024];
//创建一个DatagramPacket对象,并指定DatagramPacket对象的大小
DatagramPacket packet = new DatagramPacket(data,data.length);
//读取接收到得数据
socket.receive(packet);
//把客户端发送的数据转换为字符串。
//使用三个参数的String方法。参数一:数据包 参数二:起始位置 参数三:数据包长
String result = new String(packet.getData(),packet.getOffset() ,packet.getLength());
//打印读取到得数据
System.out.println("UDP Data:" + result);
五.创建一个UDP客户端,用于发送数据。
[java] view
plaincopy
//创建DatagramSocket对象并指定服务端的端口号
DatagramSocket socket = new DatagramSocket(1985);
//创建一个Inet4Address对象
//需要使用Inet4Address.getByName把IP地址转换为网络地址
//有些java版本可以使用InetAddress
Inet4Address serverAddress = (Inet4Address) Inet4Address.getByName("192.168.1.32");
//设置要发送的字符串,
String str = "hello psuaije";
//把字符串str字符串转换为字节数组
byte data[] = str.getBytes();
//创建一个DatagramPacket对象,用于发送数据。
//参数一:要发送的数据 参数二:数据的长度 参数三:服务端的网络地址 参数四:网络地址
DatagramPacket packet = new DatagramPacket(data, data.length ,serverAddress ,1985);
//把数据发送到服务端。
socket.send(packet); 1
六.TCP使用的是流的方式发送,UDP是以包的形式发送。
[html] view
plaincopy
<!--允许应用程序改变网络状态-->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<!--允许应用程序改变WIFI连接状态-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!--允许应用程序访问有关的网络信息-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!--允许应用程序访问WIFI网卡的网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!--允许应用程序完全使用网络-->
<uses-permission android:name="android.permission.INTERNET"/>
二.在服务端创建一个TCP连接的监听。用于接收TCP客户端传输的数据。
[java] view
plaincopy
//在logcat中打印提示,开始监听TCP
System.out.println("Accpet TCP");
//创建ServerSocket对象,并设置端口号
ServerSocket serverSocket = new ServerSocket(1984);
//使用ServerSocket中的accpet方法开始阻塞监听1984端口
Socket socket = serverSocket.accept();
//创建InputStream对象,并从socket中获取数据
InputStream inputStream = socket.getInputStream();
//创建一个字节数组,存放读取到得数据。
byte buffer[] = new byte[1024*4];
int temp = 0;
while ((temp = inputStream.read(buffer)) != -1) {
System.out.println(new String(buffer ,0 ,temp));
}
三.创建一个TCP客户端,用于发送数据。
[java] view
plaincopy
//创建一个Socket对象,并指定服务端的IP及端口号
Socket socket = new Socket("192.168.1.32" ,1984);
//创建一个InputStream用户读取要发送的文件。
InputStream inputStream = new FileInputStream("e://a.txt");
//获取Socket的OutputStream对象用于发送数据。
OutputStream outputStream = socket.getOutputStream();
//创建一个byte类型的buffer字节数组,用于存放读取的本地文件
byte buffer[] = new byte[4*1024];
int temp = 0;
//循环读取文件
while ((temp = inputStream.read(buffer)) != -1) {
//把数据写入到OuputStream对象中
outputStream.write(buffer ,0 ,temp);
}
//发送读取的数据到服务端
outputStream.flush();
四.在服务端创建一个UDP的监听,用于接收UDP连接的数据接收
[java] view
plaincopy
//打印一个提示
System.out.println("accpet UDP");
//创建一个DatagramSocket对象,并指定监听端口。(UDP使用DatagramSocket)
DatagramSocket socket = new DatagramSocket(1985);
//创建一个byte类型的数组,用于存放接收到得数据
byte data[] = new byte[4*1024];
//创建一个DatagramPacket对象,并指定DatagramPacket对象的大小
DatagramPacket packet = new DatagramPacket(data,data.length);
//读取接收到得数据
socket.receive(packet);
//把客户端发送的数据转换为字符串。
//使用三个参数的String方法。参数一:数据包 参数二:起始位置 参数三:数据包长
String result = new String(packet.getData(),packet.getOffset() ,packet.getLength());
//打印读取到得数据
System.out.println("UDP Data:" + result);
五.创建一个UDP客户端,用于发送数据。
[java] view
plaincopy
//创建DatagramSocket对象并指定服务端的端口号
DatagramSocket socket = new DatagramSocket(1985);
//创建一个Inet4Address对象
//需要使用Inet4Address.getByName把IP地址转换为网络地址
//有些java版本可以使用InetAddress
Inet4Address serverAddress = (Inet4Address) Inet4Address.getByName("192.168.1.32");
//设置要发送的字符串,
String str = "hello psuaije";
//把字符串str字符串转换为字节数组
byte data[] = str.getBytes();
//创建一个DatagramPacket对象,用于发送数据。
//参数一:要发送的数据 参数二:数据的长度 参数三:服务端的网络地址 参数四:网络地址
DatagramPacket packet = new DatagramPacket(data, data.length ,serverAddress ,1985);
//把数据发送到服务端。
socket.send(packet); 1
六.TCP使用的是流的方式发送,UDP是以包的形式发送。
相关文章推荐
- UDP和TCP通信机制(实现简单的数据发送与接收)
- 简单的IPv6 UDP/TCP socket编程 -- 两台Linux实现简单的ipv6通信
- python socket实现简单的(TCP/UDP)服务器/客户端
- Socket的TCP、UDP通讯(实现功能:文字发送,窗口震动,大文件传输,语音发送,语音通话、直接发送全屏截图)
- Silverlight使用socket tcp简单实现聊天室功能
- java基于TCP的socket编程简单实现[代码实践过]
- Java Socket发送与接收HTTP消息简单实现
- linux简单的TCP与UDP的socket程序以及机器大小端的判断程序
- android 开发之socket编程 UDP和TCP通信实现
- Socket TCP 简单聊天的实现
- Socket UDP 简单聊天的实现
- java 实现tcp与udp读取与发送数据
- socket 发送 TCP和UDP方式
- 简单socket服务(二)实现多客户端向服务器发送数据
- Socket编程 (连接,发送消息) (Tcp、Udp) - Part1
- Java Socket发送与接收HTTP消息简单实现
- C++ 简单的 Tcp 实现[socket] 客户端与客户端通信
- TCP/UDP Socket编程 C/C++实现(Windows Platform SDK)
- Java Socket发送与接收HTTP消息简单实现
- 运用JAVA的concurrent.ExecutorService线程池实现socket的TCP和UDP连接