运行失败QAQ

运行失败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,反正就是无法正常收发消息..

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 轻风起自远东QAQ 2018-03-16 18:42:48

解决了,是服务器IP填错了。

提问者 轻风起自远东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是这样的

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android数据通信开发与应用2018版
  • 参与学习           人
  • 提交作业       147    份
  • 解答问题       687    个

本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师