运行失败QAQ
//服务器端
public class UdpServer {
//ip地址
private InetAddress mInetAddress;
//服务器端口号
private int mPort = 7777;
private DatagramSocket datagramSocket;
private Scanner mScanner;
public UdpServer () {
try {
//获取本机地址
mInetAddress = InetAddress.getLocalHost();
//实例化DatagramSocket对象
datagramSocket = new DatagramSocket(mPort, mInetAddress);
mScanner = new Scanner(System.in);
mScanner.useDelimiter("\n");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
}
}
public void start () {
while (true) {
byte[] buf = new byte[1024];
//实例化DatagramPacket
DatagramPacket receivedPacket = new DatagramPacket(buf, 0, buf.length);
try {
//从客户端获取信息,若没有从客户端获取到DatagramPacket对象,则会一直执行该方法,即阻塞方法
datagramSocket.receive(receivedPacket);
//从客户端获取到了DatagramPacket,输出客户端返回的信息
InetAddress address = receivedPacket.getAddress();//客户端的ip地址
int port = receivedPacket.getPort();//客户端端口号
String clientMsg = new String(receivedPacket.getData(), 0,
receivedPacket.getData().length);//客户端传回的自定义数据
//输出
System.out.println("address = " + address + ", port = " + port
+ ", clentMsg = " + clientMsg);
//将消息发送回客户端,这个方法也是阻塞的
String returnedMsg = mScanner.next();
byte[] returnMsgBytes = returnedMsg.getBytes();
DatagramPacket sendPacket = new DatagramPacket(returnMsgBytes, 0, returnMsgBytes.length,
receivedPacket.getAddress(), receivedPacket.getPort());
datagramSocket.send(sendPacket);//将数据发送回客户端
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main (String[] args) {
new UdpServer().start();
}
}//客户端
public class UdpClient {
//服务器IP
private String mServerIp = "192.168.43.1";
//服务器端口号
private int mServerPort = 7777;
//服务器的InetAddress
private InetAddress mServerAddress;
//DatagramSocket
private DatagramSocket datagramSocket;
private Scanner mScanner;
public UdpClient () {
try {
//通过服务器IP获取服务器的InetAddress对象
mServerAddress = InetAddress.getByName(mServerIp);
//实例化DatagramSocket对象
datagramSocket = new DatagramSocket();
mScanner = new Scanner(System.in);
mScanner.useDelimiter("\n");
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
public void start () {
while (true) {
try {
//发送数据到服务器
String clientMsg = mScanner.next();
byte[] clientMsgBytes = clientMsg.getBytes();
DatagramPacket clientPacket = new DatagramPacket(clientMsgBytes, clientMsgBytes.length,
mServerAddress, mServerPort);
datagramSocket.send(clientPacket);
//从服务器接收数据
byte[] buf = new byte[1024];
DatagramPacket serverMsgPacket = new DatagramPacket(buf, 0, buf.length);
datagramSocket.receive(serverMsgPacket);
//打印接收到的数据
InetAddress address = serverMsgPacket.getAddress();
int port = serverMsgPacket.getPort();
String serverMsg = new String(serverMsgPacket.getData(), 0, serverMsgPacket.getData().length);
System.out.println("address = " + address + ", port = " + port
+ ", serverMsg = " + serverMsg);
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main (String[] args) {
new UdpClient().start();
}
}不知道是IP地址错了还是端口错了,还是我的代码有bug,反正就是无法正常收发消息..
7
收起
正在回答 回答被采纳积分+1
2回答
轻风起自远东QAQ
2018-03-16 18:07:41
以太网适配器 VirtualBox Host-Only Network: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::5054:c8f4:7717:d20a%15 IPv4 地址 . . . . . . . . . . . . : 192.168.56.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 以太网适配器 VirtualBox Host-Only Network #2: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::3c9c:c0e8:14d6:4ecf%4 IPv4 地址 . . . . . . . . . . . . : 192.168.95.2 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 以太网适配器 以太网 2: 连接特定的 DNS 后缀 . . . . . . . : IPv6 地址 . . . . . . . . . . . . : 2001:da8:c803:6065:e513:acda:c544:f087 临时 IPv6 地址. . . . . . . . . . : 2001:da8:c803:6065:d8cf:47f0:a973:429d 本地链接 IPv6 地址. . . . . . . . : fe80::e513:acda:c544:f087%22 IPv4 地址 . . . . . . . . . . . . : 10.70.58.237 子网掩码 . . . . . . . . . . . . : 255.255.0.0 默认网关. . . . . . . . . . . . . : fe80::5a69:6cff:fe91:eba%22 10.70.255.254 以太网适配器 VMware Network Adapter VMnet1: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::71f1:e8eb:5c5d:da5d%7 IPv4 地址 . . . . . . . . . . . . : 192.168.43.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 以太网适配器 VMware Network Adapter VMnet8: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::7046:f243:b4d5:9077%20 IPv4 地址 . . . . . . . . . . . . : 192.168.61.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . :
我的ipconfig是这样的
Android数据通信开发与应用2018版
- 参与学习 人
- 提交作业 147 份
- 解答问题 687 个
本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星