【问题标题】:Error When Sending String Between Client And Server在客户端和服务器之间发送字符串时出错
【发布时间】:2015-04-22 01:36:04
【问题描述】:

当我从客户端向服务器发送字符串时,服务器总是抛出一个

java.net.SocketException:连接重置

如果我发送 Integer 或除 String 以外的其他类型,则不会引发异常,程序运行绝对正常。

客户端类:

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

public class TestingClient {

    public static void main(String[] args) {
        try {
            Socket clientSocket = new Socket("localhost", 9998);

            DataOutputStream outputStream = new DataOutputStream(clientSocket.getOutputStream());

            outputStream.flush();

            outputStream.writeBytes("hello");

        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

}

服务器类:

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

public class TestingServer {

    public static void main(String[] args) {
        try {
            ServerSocket serverSocket = new ServerSocket(9998);
            Socket connectionToClient = serverSocket.accept();
            BufferedReader input = new BufferedReader(new InputStreamReader(connectionToClient.getInputStream()));              

            System.out.println(input.readLine());

        } catch (IOException e) {
            e.printStackTrace();
        }


    }

}

【问题讨论】:

    标签: java network-programming


    【解决方案1】:

    好吧,"hello" 不是byte[]。在客户端上,将String 写入DataOutputStream.writeUTF(String),然后写入flush()。类似的东西

    outputStream.writeUTF("hello");
    outputStream.flush();
    

    在服务器上,您不能使用BufferedReader。你需要类似DataInputStream.readUTF()

    DataInputStream dis = new DataInputStream(
            connectionToClient.getInputStream());
    System.out.println(dis.readUTF());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      • 2022-06-24
      • 2023-03-09
      • 2021-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多