我试图用java实现一个客户端服务器,在这里我读取客户端中的输入并在服务器中执行UperCase,然后返回客户端并打印UperCase。我使用ObjectOutputStream和ObjectInputStream进行读写,但是当我在客户机中键入一个msg时,程序会显示以下错误:
Digite uma msg casa java.io.eofexception位于java.io.datainputstream.readunsignedshort(未知源)位于java.io.objectinputstream$blockdatainputstream.readunsignedshort(未知源)位于java.io.objectinputstream$blockdatainputstream.readutf(未知源)位于java.io.objectinputstream$blockdatainputstream.readutf(未知源)位于
我的客户端是这样的:
package Client.java;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
//estabelece conexao
// trocar msg com o server
try {
//cria conexao entre client e servidor
Socket socket = new Socket("localhost",5558);
//cria input and output
ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
Scanner scan = new Scanner(System.in);
System.out.println("Digite uma msg");
String word = scan.nextLine();
output.writeUTF(word);
output.flush();
word = input.readUTF();
System.out.println("Upercase"+ word);
input.close();
output.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这是我的服务器端:
package Server;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.ServerSocket;
public class Servidor {
private ServerSocket servidor;
private void criarServerSocket(int porta) throws IOException {
servidor = new ServerSocket(porta);
}
private Socket esperaConexao() throws IOException
{
Socket socket = servidor.accept();
return socket;
}
private void fechaSocket(Socket s) throws IOException {
s.close();
}
private void trataConexao(Socket socket) throws IOException {
//*recebe e envia msg */
try {
ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream input = new ObjectInputStream(socket.getInputStream());
String msg = input.readUTF();
output.writeObject(msg.toUpperCase());
output.flush();
input.close();
output.close();
} catch (IOException e) {
// TODO Auto-generated catch block
}
fechaSocket(socket);
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Servidor server = new Servidor();
System.out.println("Wait for a connection");
server.criarServerSocket(5558);
System.out.println("Conectado ");
Socket socket = server.esperaConexao();
server.trataConexao(socket);
}
}
我的服务器要关闭流了吗?我怎么能修复它,还在关闭溪流?谢谢你的帮助。
您应该在Servidor中使用
output.writeUTF(msg.toUpperCase());
而不是
output.writeObject(msg.toUpperCase());
我对套接字有点陌生,我正在尝试编写一个程序,在这个程序中,我基本上可以从客户端程序向服务器程序发送一些简单的请求。现在我只想在客户端有1或2个选项供用户选择。例如,如果用户在客户端选择“选项1”,那么服务器会返回一条消息“您选择选项1”,以此类推,但我不知道如何读取服务器上从客户端发送的输入。 客户代码: 服务器代码: 我需要在Clinet中使用两个不同的BufferedReader吗?一个用于用
正在编写一个服务器,使用Java套接字的客户端聊天程序。这是我的服务器套接字类的代码。 客户端能够建立连接并向服务器发送消息。服务器也可以接收客户端发送的消息。问题是当消息从服务器发送时,客户端没有收到消息。这是我的客户端套接字代码。
真的需要你帮忙。 我的项目是通过电缆连接两台PC机,并使用tcp套接字将客户端文本框形式的字符串发送到服务器。问题是ATI只能发送一个字符串,然后连接就会关闭。 注意:某个端口上的连接将在表单加载中建立并成功。
我们收到了这段代码,应该对其进行修改,以便无论何时客户端连接到服务器并发送消息,服务器都应该回复我听到了,伙计。这适用于一个或多个客户机,但下一个任务是,当新客户机连接时,服务器应该告诉所有其他已连接的客户机。 我以为这会很容易,但结果并不像我想象的那样。由于服务器总是得到sock 3,第一个客户端得到4,第二个客户端得到5等等,所以我尝试创建一个for循环,每当一个新客户端连接时,该循环就会向4
问题内容: 我试图用没有gui的服务器连接带有gui的客户端。连接已完成,但我看不到这两个应用程序之间的任何消息。(我应该在客户端中找到SERVER HERE,在服务器中找到CLIENT HERE) 客户端连接代码: (输入和输出在此客户端类扩展到的GUI类中定义。定义为“受保护的BufferedReader输入;受保护的PrintWriter输出;”) 另外,服务器代码: 连接似乎还可以,所以我
我组装了一个Java套接字服务器和客户端,可以互相发送消息,我想使用JavaScript作为客户端,但是。。。下面是在托管Java服务器并加载JavaScript客户端时发生的情况。 JavaScript: 这将在chrome控制台中打印: 到“ws://127.0.0.1:9005/”的WebSocket连接失败:WebSocket握手期间出错:无效状态行 WebSocket错误[对象事件] 我