使用套接字和线程写文件

萨尔曼·法鲁克(Salman Farooq)

我有一个使用套接字的客户机/服务器应用程序,客户机在其中逐行输入文本。在服务器端,我希望一个线程一次接收一行文本,而第二个线程应将同一行写入文件。这一直持续到客户端停止。我的服务器正在接收文本行,但第二个线程未将其写入文件。

以下是接收文本的服务器线程代码。

public class EchoServer extends Thread {
    public static String line = "none";

    public EchoServer(int portnum) {
        try {
            server = new ServerSocket(portnum);
        } catch (Exception err) {
            System.out.println(err);
        }
    }

    public void run() {
        try {
            while (true) {
                Socket client = server.accept();
                BufferedReader r = new BufferedReader(
                        new InputStreamReader(client.getInputStream()));
                PrintWriter w = new PrintWriter(client.getOutputStream(),
                        true);
                // w.println("Welcome to the Java EchoServer.  Type 'bye' to close.");
                while ((line = r.readLine()) != null) {
                    // read from Cleint
                    if (line != null) {
                        // p.destroy();
                        System.out.println(line);
                        // sleep(2000);
                    }
                    Thread.yield();
                }
                client.close();
            }
        } catch (Exception err) {
            System.err.println(err);
        }
    }
    private ServerSocket server;
}

以下是写入文件的线程

public class paste extends Thread {
    // To create producer and consumer as threads
    // Shared variable
    public static int x = 0; // Maximum Limit to simulate a buffer
    public String l;
    public static int j = 1;

    public void run() {
        System.out.println("n");
        if (EchoServer.line != "none") {
            String fileName = "c:/sys prg lab/salfar1.txt";
            try {
                // Assume default encoding.
                FileWriter fileWriter = new FileWriter(fileName, true);
                // Always wrap FileWriter in BufferedWriter.
                BufferedWriter bufferedWriter = new BufferedWriter(
                        fileWriter);
                // Note that write() does not automatically
                // append a newline character.
                bufferedWriter.write(EchoServer.line);
                bufferedWriter.newLine();
                System.out.println("y");
                EchoServer.line = "none";
                // Always close files.
                bufferedWriter.close();
            } catch (IOException ex) {
                System.out.println("Error writing to file '" + fileName
                        + "'");
                // Or we could just do this:
                // ex.printStackTrace();
            }
            Thread.yield();
        }
    }
}

以下是主要功能

public class execute {
    public static void main(String[] args) {
        EchoServer s = new EchoServer(9999);
        paste p = new paste();
        s.start();
        p.start();
    }
}
法国森林

在我看来,您的第二个线程运行一次然后退出,因此,当您的服务器接收到文本时,writer线程已经返回。尝试使用while(true)与在服务器线程中相同的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用线程来处理套接字的多个读/写操作?

来自分类Dev

套接字和线程python

来自分类Dev

套接字和线程python

来自分类Dev

使用Java套接字进行读/写

来自分类Dev

带套接字的多线程文件传输

来自分类Dev

C ++ ASIO:异步套接字和线程

来自分类Dev

线程/套接字和MySql(Java)的问题

来自分类Dev

TCP IP 套接字和多线程

来自分类Dev

使用线程时的套接字问题

来自分类Dev

使用线程的套接字写入错误

来自分类Dev

JAVA-使用套接字和线程接收对象不起作用

来自分类Dev

线程UDP套接字

来自分类Dev

nodejs tcp套接字写

来自分类Dev

关闭活动时如何停止活动的线程和套接字

来自分类Dev

套接字P2P和线程

来自分类Dev

Java-线程优先级和套接字

来自分类Dev

C ++套接字,多线程和输出处理

来自分类Dev

python 多线程和套接字连接问题

来自分类Dev

多线程和套接字编程问题(多连接)

来自分类Dev

使用Java套接字传输文件时获取文件名和长度

来自分类Dev

无法使用套接字发送大文件

来自分类Dev

尝试使用套接字接收文件

来自分类Dev

使用套接字发送和接收

来自分类Dev

使用 vue 和套接字获取数据

来自分类Dev

如何使用线程JAVA从套接字读取输入

来自分类Dev

Python线程将无法开始使用套接字

来自分类Dev

使用libev的多线程套接字服务器

来自分类Dev

如何使用多线程从套接字读取请求

来自分类Dev

使用FIFO和日志文件桥接Unix域套接字