无法通过套接字发送多条消息

卡斯珀·拉斯穆森(Casper Rasmussen)

我正在尝试建立一个小型聊天系统。我有一个控制台和一个客户端。现在,只有客户端需要将消息发送到控制台。我可以成功连接到服务器,并且可以从客户端向控制台发送一条消息。发送第一条消息后,故障开始。当第一个消息我不能发送任何其他消息。

我不知道是控制台不会读取消息还是客户端不会发送消息。在这种情况下,我该如何解决?

public class ClientMainClass {


private static Socket socket;
public static void main(String args[]) {
    try {

        String host = "localhost";
        int port = 25000;
        InetAddress address = InetAddress.getByName(host);
        socket = new Socket(address, port);

        Scanner scanner = new Scanner(System.in);
        System.out.println("Skriv dit username:");
        String name = scanner.nextLine();
        System.out.println("Du er logget ind som: " + name);
        String input;

        do{
            input = scanner.nextLine();
            if (input.equalsIgnoreCase("exit")) {
                System.out.println("Du forlod serveren");
                socket.close();
                continue;
            }else {
                /*OutputStream os = socket.getOutputStream();
                OutputStreamWriter osw = new OutputStreamWriter(os);
                BufferedWriter bw = new BufferedWriter(osw);*/
                PrintWriter printWriter = new PrintWriter(socket.getOutputStream(),true);
                Date date = new Date();
                String time = date.getDate()+"/"+date.getMonth()+":"+date.getHours()+":"+date.getMinutes();
                //Send the message to the server
                String message = time+ " - " + name + ": "+input;
                printWriter.println(message);
                System.out.println(message);
                continue;
            }
        }while (!(input.equals("exit")));
    } catch (Exception exception) {
        exception.printStackTrace();
    } finally {
        //Closing the socket
        try {
            socket.close();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}
}

我的服务器:

public class Main{

private static Socket socket;

public static void main(String[] args) {


    try {

        int port = 25000;
        ServerSocket serverSocket = new ServerSocket(port);
        System.out.println("Server Started and listening to the port 25000");

        while(true) {
            //Reading the message from the client
            socket = serverSocket.accept();
            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            System.out.println(br.readLine());
        }
    }
    catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            socket.close();
        } catch(Exception e){}
    }
}
}

要清楚。我可以连接到服务器。我可以从客户端向控制台发送一条消息,但最多只能发送一条消息。

f1sh

您从不会读过第二行。您的服务器接受一个连接,从该连接中读取一条线,然后等待新的连接,并丢弃可能到达第一个连接的所有内容。

但是,您的客户端使用第一个(也是唯一的)连接发送所有输入,这是绝对正确的。

这个特定的问题可以这样解决:

while(true) {
  //Reading the message from the client
  socket = serverSocket.accept();
  InputStream is = socket.getInputStream();
  InputStreamReader isr = new InputStreamReader(is);
  BufferedReader br = new BufferedReader(isr);
  while(true){
    System.out.println(br.readLine());
  }
}

这将使您的程序打印到达第一个连接的所有内容,但绝不会接受第二个连接。

为了处理多个客户,您需要Thread处理每个客户

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法通过套接字发送

来自分类Dev

Python:通过套接字发送的消息大小

来自分类Dev

通过套接字在python中发送消息

来自分类Dev

服务器无法通过C中的套接字向客户端发送消息

来自分类Dev

为什么我的服务器PrintWriter.println()无法通过套接字发送其消息?

来自分类Dev

通过套接字将消息从PHP发送到Python

来自分类Dev

通过UDP套接字发送消息时遇到问题

来自分类Dev

通过套接字将消息从PHP发送到Python

来自分类Dev

在保持客户端套接字打开以发送多条消息时,为什么在消息延迟很大时程序会报错?

来自分类Dev

ZeroMQ ROUTER套接字无法向REP套接字发送消息

来自分类Dev

无法通过套接字验证消息RSA签名方案

来自分类Dev

为什么我无法通过此套接字发送文本?

来自分类Dev

无法通过Perl套接字发送管道HTTP请求

来自分类Dev

通过套接字发送图像无法正常接收

来自分类Dev

无法腌制RSA密钥以通过套接字发送

来自分类Dev

通过套接字发送对象

来自分类Dev

通过套接字发送图像

来自分类Dev

通过套接字发送BYTE *

来自分类Dev

通过套接字发送对象

来自分类Dev

Android:通过sslsocket连接发送多条消息

来自分类Dev

套接字无法发送数据

来自分类Dev

套接字无法发送数据

来自分类Dev

通过网络通过套接字发送图像

来自分类Dev

使用python套接字发送消息

来自分类Dev

Python套接字-同时发送/接收消息

来自分类Dev

Java套接字不发送/接收消息

来自分类Dev

Python套接字发送消息无效的HTTP

来自分类Dev

使用python套接字发送消息

来自分类Dev

Java Android使用套接字发送消息