由网友(丶逃离你却找不到理由)分享简介:我用下面的code,从一个特定的端口接收数据。它不工作的机器人。但是,将数据发送到特定的端口工作正常。公共类UDPDemo延伸活动{私人TextView的电视;@覆盖公共无效的onCreate(包savedInstanceState){super.onCreate(savedInstanceState);的setCon...
我用下面的code,从一个特定的端口接收数据。它不工作的机器人。但是,将数据发送到特定的端口工作正常。
公共类UDPDemo延伸活动{
私人TextView的电视;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
电视=(TextView中)findViewById(R.id.recv_message);
尝试 {
DatagramSocket的ClientSocket的=新的DatagramSocket(9876);
byte []的receivedata =新的字节[1024];
而(真)
{
DatagramPacket类recv_packet =新的DatagramPacket(receivedata,receivedata.length);
Log.d(UDP,S:接收...);
clientsocket.receive(recv_packet);
字符串rec_str =新的String(recv_packet.getData());
tv.setText(rec_str);
Log.d(接收字符串,rec_str);
InetAddress类ip地址= recv_packet.getAddress();
INT端口= recv_packet.getPort();
Log.d(IPAddress表示,ipaddress.toString());
Log.d(端口,Integer.toString(端口));
}
}赶上(例外五){
Log.e(UDP,S:错误,E);
}
}
}
解决方案
如果您使用的是仿真器,你可能需要设置的重定向,记得模拟器是一个虚拟的路由器后面。
在换句话说,输入这些命令;
远程登录本地主机5554
REDIR添加UDP:9876:9876
,然后重试。
I use the following code to receive the data from a particular port. It's not working in Android. But sending data to particular port is working fine.
public class UDPDemo extends Activity {
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.recv_message);
try {
DatagramSocket clientsocket=new DatagramSocket(9876);
byte[] receivedata = new byte[1024];
while(true)
{
DatagramPacket recv_packet = new DatagramPacket(receivedata, receivedata.length);
Log.d("UDP", "S: Receiving...");
clientsocket.receive(recv_packet);
String rec_str = new String(recv_packet.getData());
tv.setText(rec_str);
Log.d(" Received String ",rec_str);
InetAddress ipaddress = recv_packet.getAddress();
int port = recv_packet.getPort();
Log.d("IPAddress : ",ipaddress.toString());
Log.d(" Port : ",Integer.toString(port));
}
} catch (Exception e) {
Log.e("UDP", "S: Error", e);
}
}
}
解决方案
If you are using the emulator you may need setup redirects, remember the emulator is behind a virtual router.
In other words, type these commands in;
telnet localhost 5554
redir add udp:9876:9876
and try again.
相关推荐
最新文章