【发布时间】:2023-03-04 23:13:01
【问题描述】:
我正在尝试制作一个来回发送消息的程序。我似乎已经这样做了;但是,为了来回发送消息,客户端必须首先发送消息才能开始对话。
我想知道如何根据谁先发送消息来发送消息。此外,它们似乎处于交替的对话方式中,如果服务器或客户端发送两条直接消息,则会出现错误......我真的希望这是有道理的。
服务器:
import java.io.*;
import java.net.*;
class Server
public static void main(String arg[]) throws IOException {
ServerSocket ss = null;
try{
ss = new ServerSocket(1111);
}catch(IOException e){
System.out.println("Failed");}
Socket sock = null;
try{
sock = ss.accept();
}catch(IOException io){
System.out.println("Socket Failed");}
System.out.println("Connection Successful..");
BufferedReader input = new BufferedReader(new InputStreamReader(sock.getInputStream()));
PrintStream output = new PrintStream(sock.getOutputStream());
BufferedReader ServerMessage = new BufferedReader(new InputStreamReader(System.in));
String Message;
while(true){
message= input.readLine();
System.out.println("Clien: " + message);
System.out.println("Server: ");
message = ServerMessage.readLine();
output.println(message);
System.out.println("Server: " + message);
}
}
}
客户:
import java.io.*;
import java.net.*;
class Server
public static void main(String arg[]) throws IOException {
Socket sock = null;
try{
sock = new Socket("127.0.0.1", 1111);
}catch(IOException io){
System.out.println("Socket Failed");}
System.out.println("Connection Successful..");
BufferedReader in = new BufferedReader(new `InputStreamReader(sock.getInputStream()));`
PrintStream out = new PrintStream(sock.getOutputStream());
BufferedReader ClientMessage = new BufferedReader(new InputStreamReader(System.in));
String Message;
while(true){
System.out.print("Client: ");
Message = ClientMessage.readLine();
output.println(Message);
System.out.println("Client: " + Message);
Message = in.readLine();
System.out.println("Server: " + Message);
}
}
}
【问题讨论】:
-
这是我为创建
ServerSockets 以处理涉及的一些管道而构建的框架:sourceforge.net/p/tus/code/HEAD/tree/tjacobs/io/…。希望对你有帮助