Java套接字,客户端和服务器
我想为客户端和服务器建立套接字连接以显示文件列表。但是下面的代码不会从服务器获取任何输入或将输出提供给客户端。请帮忙。
服务器
package javaapplicationthread;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintWriter;
public class zs {
public static int reads,red;
public static void main(String[] args)
{
int flg=0;
try{while(true){
ServerSocket serverSocket = new ServerSocket(1312);
Socket clientSocket = serverSocket.accept();
BufferedReader bufferedReader;
PrintWriter outk=new PrintWriter(clientSocket.getOutputStream(),true);
bufferedReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine = bufferedReader.readLine();
System.out.println("input is"+ inputLine);
outk.write("abc");
File inputFolder = new File(inputLine);
System.out.println("control is being sent to traverse");
traverse(inputFolder, "");
}
}
catch (IOException ex) {
System.out.println("my exception is"+ex)
System.out.println(leftIndent + parentNode.getName());
}
}}
-
在客户端,当您这样做时,
redd = b.readLine();
您要求阅读整行。但是在服务器中,您没有发送整行:您只要求它写三个字符:outk.write("abc");
但是,实际上这三个字符都不发送,因为PrintWriter会临时缓冲它们。要解决此问题,请将该行更改为:
outk.println("abc");
要么:
outk.write("abc\n"); outk.flush();
更改之后,客户端成功显示:
result is abc
。它没有给出任何错误
它们都给错误…readLine调用失败时,客户端引发异常。服务器在开始
while(true)
循环的下一次迭代并尝试重新创建仍在使用的套接字时会引发异常。您可能想将ServerSocket的创建移到while循环之外。
-
是否可以在客户端和服务器端都关闭Java套接字?
2021-01-30 关注 0 浏览119 1答案
-
如何使用java套接字实现客户端和服务器之间的文件传输
2021-01-31 关注 0 浏览98 1答案
-
Java Socket客户端和服务器
2021-01-29 关注 0 浏览129 1答案
-
套接字Java客户端-Python服务器
2021-01-29 关注 0 浏览92 1答案
-
Java套接字。服务器-客户端通信
2021-01-29 关注 0 浏览112 1答案
-
使用套接字的客户端-服务器-客户端通信
2021-01-30 关注 0 浏览120 1答案
-
带套接字的Java客户端/服务器应用程序?
2021-01-30 关注 0 浏览92 1答案
-
Java多线程客户端/服务器-java.net.SocketException:套接字已关闭
2021-01-29 关注 0 浏览164 1答案
-
Docker错误:客户端和服务器没有相同版本
2021-02-01 关注 0 浏览89 1答案
-
java.net.SocketException:套接字已关闭TCP客户端服务器通信
2021-01-30 关注 0 浏览100 1答案