为了账号安全,请及时绑定邮箱和手机立即绑定

用Socket二次发送消息失败,怎么办?

用Socket二次发送消息失败,怎么办?

UYOU 2019-03-14 14:15:15
本人对socket真的是小白级的,因为程序要求才硬着头皮写了个函数,结果第一次引用函数时,socket还能发送消息,但之后一直都被阻塞(?)了,直到我把整个程序关掉才发送出去。来这里看看有没有大侠可以解答一下我的问题。以下是该函数代码:        Status<Area> status=new Status<Area>();               InetAddress addr;        addr = InetAddress.getByName(HOST_NAME);        Socket mSocket;        mSocket = new Socket(addr, PORT_NO);        out = mSocket.getOutputStream();        mFlag = true;                try        {                Area a = new Area();                byte typeChosen=(byte) 0xff;                byte [] output=new byte[10];                //**中间省略output的内容**                out.write(output);                                InputStream mInput = null;                byte[] buffer = new byte[65536];                int size = -1;                boolean flag=true;                while (flag) {                    try {                    // 此处为测试代码,测试代码每次运行能成功执行。                    //所以问题应该不在parseFrontEndMsg函数中,所以此函数我就不放上来了。//                        if(flag){//                            byte[] realBuffer = new byte[18];//                            realBuffer=new byte[] {0x00,0x04,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x09};//                            parseFrontEndMsg(realBuffer,typeChosen);//                            flag=false;//                        }                        if (size < 0) {                            System.out.println("等待接收前置器发送信息....");                        } else {                            byte[] realBuffer = new byte[size];                            System.arraycopy(buffer, 0, realBuffer, 0, size);                            System.out.print("Message from front end: ");                            printBytes(realBuffer);                            parseFrontEndMsg(realBuffer,typeChosen);                            flag=false;                        }
查看完整描述

2 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

你想要完成什么样的逻辑呢?你这个程序看起来是这样:

  1. 连接服务端,然后发送数据,之后进入while循环;

  2. 阻塞读,读到数据之后做一些处理,把flag设成false,然后再阻塞在读上。


查看完整回答
反对 回复 2019-04-23
  • 2 回答
  • 0 关注
  • 600 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信