Java 服务器生成一个txt文件,客户端编写

Java 服务器生成一个txt文件,客户端编写,java,networking,client-server,Java,Networking,Client Server,我有一个项目,它有一个创建空文本文件的服务器 一旦我的客户机停止写入此文件,服务器应读取并显示结果 我的问题是,客户端正在连接到服务器,但是客户端发送的任何文本都不会写入服务器端。此外,当我退出时,服务器不会退出 这就是我到目前为止所做的: 服务器 导入java.io.BufferedReader; 导入java.io.BufferedWriter; 导入java.io.DataInputStream; 导入java.io.File; 导入java.io.FileWriter; 导入java.i

我有一个项目,它有一个创建空文本文件的服务器

一旦我的客户机停止写入此文件,服务器应读取并显示结果

我的问题是,客户端正在连接到服务器,但是客户端发送的任何文本都不会写入服务器端。此外,当我退出时,服务器不会退出

这就是我到目前为止所做的:

服务器

导入java.io.BufferedReader;
导入java.io.BufferedWriter;
导入java.io.DataInputStream;
导入java.io.File;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.ObjectInputStream;
导入java.io.ObjectOutputStream;
导入java.io.OutputStream;
导入java.io.OutputStreamWriter;
导入java.io.PrintStream;
导入java.io.PrintWriter;
导入java.net.ServerSocket;
导入java.net.Socket;
导入java.util.Scanner;
公共类服务器{
公共静态void main(字符串args[])引发IOException{
BufferedWriter out;//=new BufferedWriter(new FileWriter(“C://Users//Vagos//Desktop//file.txt”);
ServerSocket echoServer=null;
弦线;
数据输入流为;
打印流操作系统;
套接字clientSocket=null;
//尝试打开端口9999上的服务器套接字
试一试{
echoServer=新服务器套接字(55);
}
捕获(IOE异常){
系统输出打印ln(e);
}   
//从ServerSocket创建套接字对象以侦听和接受
//联系。
//开放输入和输出流
试一试{
clientSocket=echoServer.accept();
is=新的DataInputStream(clientSocket.getInputStream());
os=新的打印流(clientSocket.getOutputStream());
out=new BufferedWriter(new FileWriter(“C://Users//Vagos//Desktop//file.txt”);
//只要我们接收到数据,就将数据回显到客户端。
while(true){
line=is.readUTF();
os.println(行);
os.flush();
写出(行);
out.flush();
}
}   
捕获(IOE异常){
系统输出打印ln(e);
}
}
}
这是我的客户:

import java.io.*;
导入java.net.InetAddress;
导入java.net.ServerSocket;
导入java.net.Socket;
导入java.net.UnknownHostException;
导入java.util.Scanner;
公共类客户端{
公共静态void main(字符串[]args){
套接字smtpSocket=null;
DataOutputStream os=null;
DataInputStream为空;
弦乐;
扫描仪输入=新扫描仪(系统输入);
试一试{
smtpSocket=新套接字(“本地主机”,55);
os=新的DataOutputStream(smtpSocket.getOutputStream());
is=新的DataInputStream(smtpSocket.getInputStream());
}捕获(未知后异常e){
System.err.println(“不知道主机名”);
}捕获(IOE异常){
System.err.println(“无法获取到主机名的连接的I/O”);
}
if(smtpSocket!=null&&os!=null&&is!=null){
试一试{
做{
System.out.print(“写下客户端将发送的内容:”);
strout=in.nextLine();
os.writeBytes(strout);}
而(!strout.equals(“exit”);
os.close();
is.close();
smtpSocket.close();
}捕获(未知后异常e){
System.err.println(“尝试连接到未知主机:+e”);
}捕获(IOE异常){
System.err.println(“IOException:+e”);
}
}
}           
};
试试这个

在您的服务器中

    // Open input and output streams

    try {
        clientSocket = echoServer.accept();
        is = new DataInputStream(clientSocket.getInputStream());
        InputStreamReader ir = new InputStreamReader(is);
        BufferedReader br = new BufferedReader(ir);
        os = new PrintStream(clientSocket.getOutputStream());
        out = new BufferedWriter(new FileWriter("C://Users//Vagos//Desktop//file.txt"));
        // As long as we receive data, echo that data back to the client.

        while (true) {
            line = br.readLine();
            System.out.println(line);
            os.println(line);
            os.flush();
            if( line != null ){
             out.write(line + '\n');
             out.flush();
            }
        }
    }
关于客户的“退出”部分,请在更改后重试
while(!strout.equals(“exit”)

while(!strout.equalsIgnoreCase(“退出”)


希望这有帮助

今天我的老师上传了一个新项目,因为他做了一个错误的项目,我要做的项目与旧项目类似,但客户正在读或写一个0-911的txt,客户随机选择什么是使读o写如果选择读显示txt的数字如果选择写他随机写一个0-911的数字,如果选择100则停止

我成功了,但没什么能证明我是成功的

切断

客户

import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Random;
import java.util.Scanner;

public class client {

    public static void main(String[] args) throws IOException {
        Socket smtpSocket = null;  
        DataOutputStream os = null;
        DataInputStream is = null;
        String strout;
        int number=0;
        Random rand = new Random(System.currentTimeMillis());
        Scanner in = new Scanner(System.in);
        try {
            smtpSocket = new Socket("localhost", 55);
            os = new DataOutputStream(smtpSocket.getOutputStream());
            is = new DataInputStream(smtpSocket.getInputStream());
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: localhost");
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to: localhost");
        }

        int choice=2;//rand.nextInt(2);
        if(choice==1){
            int num=is.read();
            System.out.println(num);

        }
        else if(choice==2){
            try {
                do{
                 number=rand.nextInt(911);
                // System.out.println(number);
                os.writeInt(number);
                }while(number!=100);
                os.close();
                is.close();
                smtpSocket.close();   
            } catch (UnknownHostException e) {
                System.err.println("Trying to connect to unknown host: " + e);
            } catch (IOException e) {
                System.err.println("IOException:  " + e);
            }
        }
    }           
}

是的,但当退出是说nul nul nul nul而不是停止时,nul、服务器或客户端会说什么。在您的服务器中还有一个
while(true)
代码需要更改。您必须结束该循环,可能您可以这样做
while(line!=null)
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Random;
import java.util.Scanner;

public class client {

    public static void main(String[] args) throws IOException {
        Socket smtpSocket = null;  
        DataOutputStream os = null;
        DataInputStream is = null;
        String strout;
        int number=0;
        Random rand = new Random(System.currentTimeMillis());
        Scanner in = new Scanner(System.in);
        try {
            smtpSocket = new Socket("localhost", 55);
            os = new DataOutputStream(smtpSocket.getOutputStream());
            is = new DataInputStream(smtpSocket.getInputStream());
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: localhost");
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to: localhost");
        }

        int choice=2;//rand.nextInt(2);
        if(choice==1){
            int num=is.read();
            System.out.println(num);

        }
        else if(choice==2){
            try {
                do{
                 number=rand.nextInt(911);
                // System.out.println(number);
                os.writeInt(number);
                }while(number!=100);
                os.close();
                is.close();
                smtpSocket.close();   
            } catch (UnknownHostException e) {
                System.err.println("Trying to connect to unknown host: " + e);
            } catch (IOException e) {
                System.err.println("IOException:  " + e);
            }
        }
    }           
}