Android如何实现TCP和UDP传输
作者:网络转载 发布时间:[ 2015/3/18 15:05:32 ] 推荐标签:Android TCP UDP 代码
是不是很好理解,这里不多说了,直接看代码吧!实践出真知。
TCP服务器端代码:
try{
Boolean endFlag=false;
ServerSocket ss=new ServerSocket(12345);
while(!endFlag){
//等待客户端连接
Socket s=ss.accept();
BufferedReader input=new BufferedReader(newInputStreamReader(s.getInputStream()));
//注意第二个参数据为true将会自动flush,否则需要需要手动操作output.flush()
PrintWriter output=newPrintWriter(s.getOutputStream(),true);
String message=input.readLine();
Log.d("Tcp Demo","message from Client:"+message);
output.println("message received!");
//output.flush();
if("shutDown".equals(message)){
endFlag=true;
}
s.close();
}
ss.close();
}catch(UnknownHostException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
TCP客户端代码:
try{
Socket s=new Socket("localhost",12345);
//outgoing stream redirect to socket
OutputStream out=s.getOutputStream();
//注意第二个参数据为true将会自动flush,否则需要需要手动操作out.flush()
PrintWriter output=new PrintWriter(out,true);
output.println("Hello IdeasAndroid!");
BufferedReader input=new BufferedReader(newInputStreamReader(s
.getInputStream()));
//read line(s)
String message=input.readLine();
Log.d("Tcp Demo","message From Server:"+message);
s.close();
}catch(UnknownHostException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
下面我们看看UDP:
UDP传输原理
UDP服务器端代码:
//UDP服务器监听的端口
Integer port=12345;
//接收的字节大小,客户端发送的数据不能超过这个大小
byte[]message=new byte[1024];
try{
//建立Socket连接
DatagramSocket datagramSocket=new DatagramSocket(port);
DatagramPacket datagramPacket=new DatagramPacket(message,
message.length);
try{
while(true){
//准备接收数据
datagramSocket.receive(datagramPacket);
Log.d("UDP Demo",datagramPacket.getAddress()
.getHostAddress().toString()
+":"+new String(datagramPacket.getData()));
}
}catch(IOException e){
e.printStackTrace();
}
}catch(SocketException e){
e.printStackTrace();
}
UDP客户端代码:
public static void send(String message){
message=(message==null?"Hello IdeasAndroid!":message);
int server_port=12345;
DatagramSocket s=null;
try{
s=new DatagramSocket();
}catch(SocketException e){
e.printStackTrace();
}
InetAddress local=null;
try{
//换成服务器端IP
local=InetAddress.getByName("localhost");
}catch(UnknownHostException e){
e.printStackTrace();
}
int msg_length=message.length();
byte[]messagemessageByte=message.getBytes();
DatagramPacket p=new DatagramPacket(messageByte,msg_length,local,
server_port);
try{
s.send(p);
}catch(IOException e){
e.printStackTrace();
}
}
代码中需要注意的地方已做了注释,希望本文对您有所帮助!
相关推荐

更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11