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 TCP客户机-服务器程序的问题_Java_Sockets_Tcp - Fatal编程技术网

Java TCP客户机-服务器程序的问题

Java TCP客户机-服务器程序的问题,java,sockets,tcp,Java,Sockets,Tcp,下面是我的服务器程序 import java.io.*; import java.net.*; class TwoWayServer { public static void main(String argv[]) throws Exception { ServerSocket server_socket = new ServerSocket(1234); while(true) { Socket

下面是我的服务器程序

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

class TwoWayServer
{
   public static void main(String argv[]) throws Exception
      {
         ServerSocket server_socket = new ServerSocket(1234);

         while(true)
         {
            Socket listen_socket = server_socket.accept();
            BufferedReader client_input = new BufferedReader(new InputStreamReader(listen_socket.getInputStream()));
            DataOutputStream dos = new DataOutputStream(listen_socket.getOutputStream());
            String client_str = client_input.readLine();
            System.out.println(client_str);
            String st=client_str.toUpperCase();
            dos.writeBytes(st);
         }
      }
}
我的客户程序如下:

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

class TwoWayClient
{
 public static void main(String argv[]) throws Exception
 {
  BufferedReader user_input = new BufferedReader( new InputStreamReader(System.in));
  Socket socket = new Socket("localhost", 1234);
  DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
  BufferedReader server_response = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  String client_str = user_input.readLine();
  dos.writeBytes(client_str + '\n');
  String response = server_response.readLine();
  System.out.println("FROM SERVER: " + response);
  socket.close();
 }
}
这里,如果我从客户端提供一个字符串,那么服务器将返回字符串的大写形式。但问题是,一旦我提供了字符串,我就不会从服务器得到任何响应。
请提供帮助。

问题在于服务器没有使用换行符将字节写入服务器,请尝试替换
dos.writeBytes(st)


您可以尝试对代码进行这些修改

服务器:

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

class TwoWayServer
{
        public static void main(String argv[]) throws Exception
        {
                ServerSocket server_socket = new ServerSocket(1234);

                while(true)
                {
                        Socket listen_socket = server_socket.accept();
                        BufferedReader client_input = new BufferedReader(new InputStreamReader(listen_socket.getInputStream()));
                        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(listen_socket.getOutputStream()));
                        String client_str = client_input.readLine();
                        System.out.println(client_str);
                        String st=client_str.toUpperCase();
                        bw.write(st + '\n');
                        bw.flush();
                }
        }
}
客户:

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

class TwoWayClient
{
        public static void main(String argv[]) throws Exception
        {
                BufferedReader user_input = new BufferedReader( new InputStreamReader(System.in));
                Socket socket = new Socket("localhost", 1234);
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                BufferedReader server_response = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                String client_str = user_input.readLine();
                bw.write(client_str + '\n');
                bw.flush();
                String response = server_response.readLine();
                System.out.println("FROM SERVER: " + response);
                socket.close();
        }
}

看到编辑过的代码,我在复制粘贴代码时有点困惑,反正他理解,对吧?
import java.io.*;
import java.net.*;

class TwoWayClient
{
        public static void main(String argv[]) throws Exception
        {
                BufferedReader user_input = new BufferedReader( new InputStreamReader(System.in));
                Socket socket = new Socket("localhost", 1234);
                BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
                BufferedReader server_response = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                String client_str = user_input.readLine();
                bw.write(client_str + '\n');
                bw.flush();
                String response = server_response.readLine();
                System.out.println("FROM SERVER: " + response);
                socket.close();
        }
}