我想为客户端和服务器执行套接字连接以显示文件列表,但是代码下面没有从服务器获取任何输入或将输出提供给客户端。
请帮忙。
服务器代码:
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()));
traverse(inputFolder, "");
}
}
catch (IOException ex) {
System.out.println("my exception is"+ex);
} }
答案 0 :(得分:1)
我首先看到的是你在while循环中创建服务器套接字。在while循环的第二次运行中,您最终会得到' java.net.BindException:已在使用的地址:JVM_Bind'。
服务器代码如下:
try{
ServerSocket serverSocket = new ServerSocket(1312);
while(true) {
serverSocket.accept();
//Client connected
Socket clientSocket = serverSocket.accept();
//Socket read-write
//Also it is better to delegate this client session to another thread
}
}catch(IOException e) {
e.printStackTrace();
}
其次,您的服务器代码读取一个String行并发送" abc"到客户端,然后调用"遍历"梅托德。但是"遍历"似乎没有向客户端套接字发送任何内容。
客户也被" redd = b.readLine();"因为服务器只发送" abc"并且不附加新行(' \ n或\ r \ n)。