安卓UDP发送问题

很俗的一个人 2016-07-14 01:30:48
public void sent(byte[] msg){
InetAddress address = null;
DatagramPacket packet = null;
try {
address = InetAddress.getByName("www.sitong.space");
packet = new DatagramPacket(msg, msg.length, address, SERVER_PORT);
datagramSocket.send(packet);
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
这是我发送部分的代码,运行报错:
java.net.SocketException: sendto failed: EINVAL (Invalid argument);
android.system.ErrnoException: sendto failed: EINVAL (Invalid argument);
把域名换成IP地址也还是不行,求大神赐解答T.T
...全文
233 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
网易云捕 2016-07-15
  • 打赏
  • 举报
回复
引用 4 楼 everyting_is_full 的回复:
[quote=引用 2 楼 crash163 的回复:] 可以单步调试一下,是哪一步出现的问题,跑了一下下面代码试试
public static void sendUDP(){
        try
        {
            //创建一个DatagramSocket对象
            DatagramSocket socket=new DatagramSocket();
            //创建一个表示IP地址的InetAddress对象
            InetAddress serverAddress= InetAddress.getByName("www.sitong.space");
            String str="Hello,world!Hello,Everyone!";
            byte[]data=str.getBytes();
            //创建一个用于发送的DatagramPacket对象
            DatagramPacket packet=new DatagramPacket(data,data.length,serverAddress,6662);
            //发送数据
            socket.send(packet);
        }
        catch(Exception e)
        {
            e.printStackTrace();

        }
    }
这样就不报错,难道是因为收发不能使用同一个DatagramSocket吗?[/quote] 不要用同一个,通常在创建服务器时,创建指定端口的DatagramSocket实例,客户端发送时创建另外一个DatagramSocket实例
很俗的一个人 2016-07-15
  • 打赏
  • 举报
回复
引用 2 楼 crash163 的回复:
可以单步调试一下,是哪一步出现的问题,跑了一下下面代码试试
public static void sendUDP(){
        try
        {
            //创建一个DatagramSocket对象
            DatagramSocket socket=new DatagramSocket();
            //创建一个表示IP地址的InetAddress对象
            InetAddress serverAddress= InetAddress.getByName("www.sitong.space");
            String str="Hello,world!Hello,Everyone!";
            byte[]data=str.getBytes();
            //创建一个用于发送的DatagramPacket对象
            DatagramPacket packet=new DatagramPacket(data,data.length,serverAddress,6662);
            //发送数据
            socket.send(packet);
        }
        catch(Exception e)
        {
            e.printStackTrace();

        }
    }
这样就不报错,难道是因为收发不能使用同一个DatagramSocket吗?
很俗的一个人 2016-07-15
  • 打赏
  • 举报
回复
引用 1 楼 dinjay 的回复:
getByName第二个参数传端口号试试。
这个好像只有一个参数欸
网易云捕 2016-07-14
  • 打赏
  • 举报
回复
可以单步调试一下,是哪一步出现的问题,跑了一下下面代码试试
public static void sendUDP(){
        try
        {
            //创建一个DatagramSocket对象
            DatagramSocket socket=new DatagramSocket();
            //创建一个表示IP地址的InetAddress对象
            InetAddress serverAddress= InetAddress.getByName("www.sitong.space");
            String str="Hello,world!Hello,Everyone!";
            byte[]data=str.getBytes();
            //创建一个用于发送的DatagramPacket对象
            DatagramPacket packet=new DatagramPacket(data,data.length,serverAddress,6662);
            //发送数据
            socket.send(packet);
        }
        catch(Exception e)
        {
            e.printStackTrace();

        }
    }
dinjay 2016-07-14
  • 打赏
  • 举报
回复
getByName第二个参数传端口号试试。

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧