gpt4 book ai didi

java - 客户端-服务器应用程序套接字问题

转载 作者:行者123 更新时间:2023-12-01 15:51:30 25 4
gpt4 key购买 nike

我目前正在开发一个客户端-服务器应用程序,我遇到了这个问题:我想根据连接的套接字发送的内容创建一个不同的类实例,但它只创建第一个实例,然后就卡住了。这是一些代码:

    Socket clientSocket = null;
ServerSocket server = null;
String buff = null;
transfer tr = null;
colectieClienti clienti = new colectieClienti();

还有:

while (true) {
try {
clientSocket = server.accept();
buff = (new BufferedReader(new InputStreamReader(clientSocket.getInputStream()))).readLine();
if (buff.equals("client")) {
(colectieClienti.useri[colectieClienti.nrUseri++] = new clientThread(clientSocket, stmt)).start();
} else {
tr = new transfer(clientSocket);
tr.start();
}
} catch (IOException ex) {
System.out.println(ex);
}
}

我必须提到clientThread是一个扩展Thread并与GUI通信的类,而transfer是一个仅发送消息的类一些文件从客户端到服务器。逻辑是这样的:在 GUI 中,用户连接到服务器,因此它创建了一个新的 clientThread 实例,之后,当用户按下按钮时,它会创建一个新的套接字(在客户端并向服务器发送一条消息,例如“我想创建一个 transfer 类的新实例,这是由 buff 完成的)并接收数据。但它只创建了 clientThread 实例,然后就卡住了。有人可以帮助我吗?

LE:这是clientThread的构造函数

 public clientThread(Socket socket, Statement statement) {
comunicare = socket;
try {
oStream = comunicare.getOutputStream();
is = new BufferedReader(new InputStreamReader(comunicare.getInputStream()));
os = new PrintStream(oStream);
} catch (IOException ex) {
System.out.println(ex);
}
this.statement = statement;
}

最佳答案

这只是一个猜测,但是您是否从客户端发送行终止符? BufferedReader.readLine() 会一直读取,直到获得\n、\r 或\r\n,因此如果客户端没有写入该内容,服务器就会等待。

关于java - 客户端-服务器应用程序套接字问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5927582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com