Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 语句,但不在客户端程序中执行_Java_Sockets_Client Server - Fatal编程技术网

Java 语句,但不在客户端程序中执行

Java 语句,但不在客户端程序中执行,java,sockets,client-server,Java,Sockets,Client Server,我正在尝试从服务器读取一个文件,并且能够成功地完成。但是,在客户端,while循环之后的语句根本不执行。请帮我处理这个请求。请求客户端输入的行根本不显示。请帮忙 //Client Side Code import java.io.*; import java.net.*; import java.util.StringTokenizer; import java.lang.*; public class oss_client1 { public static void main(Str

我正在尝试从服务器读取一个文件,并且能够成功地完成。但是,在客户端,while循环之后的语句根本不执行。请帮我处理这个请求。请求客户端输入的行根本不显示。请帮忙

//Client Side Code
import java.io.*;
import java.net.*;
import java.util.StringTokenizer;
import java.lang.*;

public class oss_client1 {
    public static void main(String args[]) throws Exception {

        Socket sock = new Socket("127.0.0.1", 2222);
        char n1;
        int choice;

        // reading the file name from keyboard. Uses input stream
        BufferedReader keyRead = new BufferedReader(new InputStreamReader(
                System.in));
        BufferedReader dis = new BufferedReader(
                new InputStreamReader(System.in));

        // receiving the contents from server. Uses input stream
        InputStream istream = sock.getInputStream();
        InputStream istream1 = sock.getInputStream();


        // sending the file name to server. Uses PrintWriter
        OutputStream ostream = sock.getOutputStream();
        BufferedReader dRead = new BufferedReader(
                new InputStreamReader(istream));
        BufferedReader socketRead = new BufferedReader(new InputStreamReader(
                istream1));


        PrintWriter pwrite = new PrintWriter(ostream, true);
        PrintWriter pwrite1 = new PrintWriter(ostream, true);

        do {
            System.out.println("Enter the website name: ");
            String u_input = keyRead.readLine();
            pwrite.println(u_input);
            String str;

            while ((str = dRead.readLine()) != null) {
                // reading line-by-line
                System.out.println(str);
            }


            str = dRead.readLine();
            System.out.println(str);
            dRead.close();

            System.out
                    .print("\nPlease enter the product code which you want to buy: ");

            String pcode = dis.readLine();
            pwrite1.println(pcode);
            String pcode_res = socketRead.readLine();

            System.out.print("\nBack from server " + pcode_res + "\n");
            System.out.println("\nDo you want to continue(Y/N)");
            String n = dis.readLine();
            n1 = n.charAt(0);

        } while (n1 == 'Y' || n1 == 'y');

        pwrite.close();
        socketRead.close();
        keyRead.close();
    }

}
//服务器端代码

import java.net.*;
import java.util.*;
import java.io.*;

public class oss_server1 {
    static Socket clientSocket = null;
    static ServerSocket serverSocket = null;
    static clientThread t[] = new clientThread[10];

    public static void main(String args[]) throws Exception {

        int port_number = 2222; // The default port

        if (args.length < 1) {
            System.out.println("Now using port number=" + port_number);
        } else {
            port_number = Integer.valueOf(args[0]).intValue();
        }

        /* Try to open a server socket on port port_number (default 2222) */
        try {
            serverSocket = new ServerSocket(port_number);
        } catch (IOException e) {
            System.out.println(e);
        }

        while (true) {
            try {
                clientSocket = serverSocket.accept();
                for (int i = 0; i <= 9; i++) {
                    if (t[i] == null) {
                        (t[i] = new clientThread(clientSocket, t)).start();
                        port_number++;
                        break;
                    } // end of if loop
                } // end for looop
            }// end of try loop
            catch (IOException e) {
                System.out.println(e);
            }
        } // end of while loop

    }
}

class clientThread extends Thread {


    DataInputStream is = null;
    DataOutputStream dout = null;
    Socket clientSocket = null;
    clientThread t[];

    public clientThread(Socket clientSocket, clientThread[] t) {
        this.clientSocket = clientSocket;
        this.t = t;
    }

    public void run() {
        try {
            System.out.println("Welcome to US ONLINE SHOPPING SYSTEM");
            String website = "www.US_OSS.com";

            // buffer stream for reading the choice from client
            InputStream istream = clientSocket.getInputStream();
            InputStream istream1 = clientSocket.getInputStream();
            BufferedReader webRead = new BufferedReader(new InputStreamReader(istream));
            BufferedReader pcodeRead = new BufferedReader(new InputStreamReader(istream));


            // buffer stream reading the file contents
            BufferedReader displayRead = new BufferedReader(new FileReader(
                    "display_client.txt"));
            BufferedReader prodRead = new BufferedReader(new FileReader(
                    "product_list.txt"));

            // keeping output stream ready to send the contents
            OutputStream ostream = clientSocket.getOutputStream();
            PrintWriter pwrite = new PrintWriter(ostream, true);
            String str, str1, pcode;
            String fname = webRead.readLine();
            if (fname.compareTo(website) != 0) {
                pwrite.println("Error 404: NOT FOUND");
            } else {
                while ((str = displayRead.readLine()) != null) // reading line-by-line from file 
                {
                    pwrite.println(str);
                }
                displayRead.close();
                str = "END OF PRODUCT LIST";

                pwrite.println(str);
                pcode = pcodeRead.readLine();
                System.out.print("\nReceived PCODE is: " + pcode);
                pwrite.println(pcode);
            }
            // pwrite.close();
        } // end of try block
        catch (IOException e) {
            System.out.println(e);
        }

    } // end of run class
}// end of Client thread class 
import java.net.*;
导入java.util.*;
导入java.io.*;
公共类oss_服务器1{
静态套接字clientSocket=null;
静态ServerSocket ServerSocket=null;
静态clientThread t[]=新clientThread[10];
公共静态void main(字符串args[])引发异常{
int port_number=2222;//默认端口
如果(参数长度<1){
System.out.println(“现在使用端口号=“+端口号”);
}否则{
端口号=整数.valueOf(args[0]).intValue();
}
/*尝试在端口号上打开服务器套接字(默认2222)*/
试一试{
serverSocket=新的serverSocket(端口号);
}捕获(IOE异常){
系统输出打印ln(e);
}
while(true){
试一试{
clientSocket=serverSocket.accept();

对于(int i=0;i
BufferedReader
EOF
之后读取时将发出
IOException

相反,我建议您使用
Scanner
读取文件 您的代码看起来像…(在服务器端)


我在第一次回复时犯了错误,我读得太快了。我删除了它。我现在将重新阅读代码。原因之一可能是一些
异常
!向代码格式化程序致敬:-)但是,分号是必要的。否则它会导致语法错误。你可以发布相关代码吗?代码太多了。你还可以指出循环卡住时哪个
?用
e.printStackTrace()替换
catch()
的正文
和runI我认为在服务器端的实际代码中,由于exception@boxed__l对该注释+1。也尝试了…获取文件内容后的下一行仍然没有执行…wen尝试在服务器中使用pwrite.close,然后该行执行,但套接字本身被关闭:-(@user2582322…我忘了添加文件对象,请查看更新的代码
Scanner scnFile=new Scanner(new File("display_client.txt")); //give absolute path if necessary

while(scnFile.hasNext()){

System.out.println(scnFile.nextLine());

}

scnFile.close();