关于Socket通讯一直获取不到数据

Lohanry 发布于 2012/07/08 15:09
阅读 1K+
收藏 0

一直无法输出.请问是哪里错误?

加载中
0
理工男海哥
理工男海哥

总结了一下,有几个问题:

1、你的服务器是否在正常运行?端口号是否正确?

2、你用的是datainputstream,服务器是否也是用这个类?

3、你用的是readutf方法,服务器是否用writeutf方法?

 

如果以上三点,不满足,就有问题。

Lohanry
Lohanry
是我自己第三点弄错了,.
0
BarryWey
BarryWey

1、你连接的58.60.12.177那个服务器14000端口有没有ServerSocket在运行?

2、如果有ServerSocket在运行,那么是不是先readUTF,然后再writeUTF?

(readXXX和writeXXX方法要配套使用,不然无法接受数据)

Lohanry
Lohanry
是停在read
BarryWey
BarryWey
回复 @Lohanry : debug一下,看看是哪一行阻塞了。
Lohanry
Lohanry
py可以获得数据…但是java不咋会…是我语法错了?
0
ChenQi
ChenQi
我最近也正在看java networking。试了下writeUTF和readUTF没问题,你是不是server那边搞错了?writeUTF也不需要flush啊。
Lohanry
Lohanry
是我弄错了,
0
ChenQi
ChenQi
        try {
            OutputStream out = socket.getOutputStream();
            InputStream in = socket.getInputStream();
            for (;;) {
                DataOutputStream dout = new DataOutputStream(out);
                DataInputStream din = new DataInputStream(in);
                String msg = din.readUTF();
                dout.writeUTF(msg);
            }
        } catch (EOFException e) {
            System.out.println("One conversation ended");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                socket.shutdownOutput();
                socket.shutdownInput();
                socket.close();
            } catch (IOException e) {}
        }
    }

server端

        try {
            System.out.println("Handle Conversation");
            OutputStream out = socket.getOutputStream();
            InputStream in = socket.getInputStream();
            DataOutputStream dout = new DataOutputStream(out);
            DataInputStream din = new DataInputStream(in);
            String msg;
            String retMsg;
            for (;;) {
                Scanner s = new Scanner(System.in);
                if (s.hasNext()) {
                    msg = s.next();
                    dout.writeUTF(msg);
                    retMsg = din.readUTF();
                    System.out.println(retMsg);
                }
                else {
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                socket.close();
            } catch (IOException e) {}
        }
    }

client

0
jingshishengxu
jingshishengxu
socket 不需要open?
返回顶部
顶部