gpt4 book ai didi

java - 在android中的数据报套接字上发送和接收UDP数据包

转载 作者:搜寻专家 更新时间:2023-11-01 08:02:57 25 4
gpt4 key购买 nike

我有两个类,一个是发送者类,另一个是接收者类。发送和接收应用程序都在几秒钟后停止并关闭。我的发件人类别是:

    public class MainActivity extends Activity {
InetAddress receiverAddress;
DatagramSocket datagramSocket;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


try {
datagramSocket = new DatagramSocket(4444);
} catch (SocketException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

byte[] buffer = "0123456789".getBytes();
byte[] address="192.168.1.101".getBytes();

try {
receiverAddress = InetAddress.getByAddress(address);
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

DatagramPacket packet = new DatagramPacket(
buffer, buffer.length, receiverAddress, 4444);

try {
datagramSocket.send(packet);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}




}

我的收听课是:

public class MainActivity extends Activity {
DatagramSocket datagramSocket;
DatagramPacket packet;
TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tv1=(TextView)findViewById(R.id.textView1);
try {
datagramSocket = new DatagramSocket(80);
} catch (SocketException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

byte[] buffer = new byte[10];
packet = new DatagramPacket(buffer, buffer.length);

try {
datagramSocket.receive(packet);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
byte[] buff = packet.getData();

tv1.setText(buff.toString());

}

在此先感谢您的帮助。

最佳答案

在 Android 中,您不允许在 UIThread(主线程)上执行网络操作

解决这个问题:将您的网络代码复制到新线程并让它运行。

关于java - 在android中的数据报套接字上发送和接收UDP数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18430330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com