Java中的基本套接字编程
我试图用Java创建一个非常简单的Java中的基本套接字编程,java,sockets,Java,Sockets,我试图用Java创建一个非常简单的Socket/ServerSocket程序。下面列出了我的两个类,它们都在同一台机器上运行。问题是,连接似乎建立得很好,但当我尝试将套接字从客户端写入服务器时,似乎什么也没有发生。服务器永远不会从.readLine()中的返回,程序会停止。我不明白为什么会这样 以下是我的课程: TheServer.java: public class TheServer { public static void main(String[] args) { Buffe
Socket
/ServerSocket
程序。下面列出了我的两个类,它们都在同一台机器上运行。问题是,连接似乎建立得很好,但当我尝试将套接字从客户端写入服务器时,似乎什么也没有发生。服务器永远不会从.readLine()中的返回,程序会停止。我不明白为什么会这样
以下是我的课程:
TheServer.java:
public class TheServer {
public static void main(String[] args) {
BufferedReader in = null;
PrintWriter out = null;
try {
ServerSocket serv = new ServerSocket(2255);
Socket sock = serv.accept();
in = new BufferedReader(
new InputStreamReader(sock.getInputStream()));
out = new PrintWriter(sock.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Connection established by Server");
try {
String line;
while ((line = in.readLine()) != "Bye") {
System.out.println(line + "Received");
out.println(line.toUpperCase());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
TheClient.java:
public class theClient {
public static void main(String[] args) {
BufferedReader in = null;
PrintWriter out = null;
try {
Socket sock = new Socket("localhost", 2255);
in = new BufferedReader(
new InputStreamReader(sock.getInputStream()));
out = new PrintWriter(sock.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("Connection established by Client");
try {
while (true) {
BufferedReader read = new BufferedReader(new InputStreamReader(
System.in));
String line = read.readLine();
out.println(line.trim());
System.out.println(in.readLine().trim());
if (line == "Bye")
break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
对于PrintWriter对象,每次写入尝试后
obj.flush();
对于PrintWriter对象,每次写入尝试后
obj.flush();
对于PrintWriter对象,每次写入尝试后
obj.flush();
对于PrintWriter对象,每次写入尝试后
obj.flush();
您是否正在传递数据中的行结束符(\n)?我想我以前也遇到过这种情况。由于您正在读取每侧的行,因此需要发送下线。println()
在它发送的每一行上都附加一个下线。我运行了修复程序,看起来它可以正常工作。不过,看来终止合同的情况并非如此“Bye”可能需要-->while(!(line=in.readLine()).equalsIgnoreCase(“Bye”){是否在数据中传递一个行尾(\n)?我想我过去也遇到过这种情况。由于您正在读取每边的行,因此需要发送EOL。println()
向它发送的每一行追加一个EOL。我运行了修复程序,看起来它正常工作。但是,看起来终止案例不正常。!=“Bye”可能需要-->而(!(line=in.readLine()).equalsIgnoreCase(“Bye”){您是否正在通过一行的结尾(\n)在数据中?我想我在过去也遇到过这种情况。由于您正在读取每一侧的行,因此需要发送EOL。println()
在它发送的每一行上附加一个EOL。我运行了修复程序,看起来它可以正常工作。但看起来终止情况不一样。!=“Bye”可能需要-->而(!(line=in.readLine()).equalsIgnoreCase(“Bye”){您是否在数据中传递了一个行尾(\n)?我想我以前也遇到过这种情况。由于您正在读取每边的行,因此需要发送EOL。println()
将EOL附加到它发送的每一行。我运行了修复程序,看起来它可以工作。但看起来终止案例没有。!=“Bye”可能需要-->while(!(line=in.readLine()).equalsIgnoreCase(“Bye”)){