【问题标题】:Client - Server Communication, Not able to get client to send information to server客户端 - 服务器通信,无法让客户端向服务器发送信息
【发布时间】:2023-03-08 02:12:01
【问题描述】:

这是我的服务器端代码:

package server;

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


public class Serverside 
{
public static void main (String [] args) throws Exception 
{
    System.out.println("The server is running.");
    int clientnumber = 1;
    ServerSocket server = new ServerSocket(9090);
    try
    {
        while (true)
        {
            new cserver(server.accept(), clientnumber++).start();

        }

    }finally
    {
        server.close();
    }

}

private static class cserver extends Thread
{
    private Socket socket;
    private int clientnumber;

    public cserver(Socket socket, int clientnumber)
    {
        this.socket = socket;

        this.clientnumber = clientnumber;
        log("New connection with Client: " + clientnumber + " at " + socket);
    }

    private void log (String message)
    {
        System.out.println(message);
    }

    public void run()
    {
        try
        {
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

            //Message for Client
            out.println("Hello, Client# " + clientnumber + ".");
            out.println("Input Line\n");

            while(true)
            {   //System.out.println("Reading from Client\n");
                String input = in.readLine();
            //  out.println(input);
                if (input == null)
                    break;

                out.println(input);
            }
        }catch (IOException e)
        {
                log("Error handling in client#" + clientnumber + ": " + e);
        }finally
        {
            try
            {
                socket.close();
            }catch (IOException e)
            {
                log("Could not close socket");
            }
            log("Connection with Client# " + clientnumber + " closed");
        }


    }
}
}

这是我的客户端代码:

package client;

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



public class clientside
{   public static void main (String [] args) throws IOException
{
    Socket myclient = new Socket("localhost", 9090);
    BufferedReader in = 
            new BufferedReader(new
            InputStreamReader(myclient.getInputStream()));
    PrintWriter out = new PrintWriter(myclient.getOutputStream(), true);
    out.print("Hello server, end session\n");

    for(int i=0;i<=2;i++)
    {
        String input = in.readLine();
        System.out.println(input);
    }

    System.out.println("It is done");

    myclient.close();

}
}

现在,当我运行代码时,客户端能够从服务器接收 2 行并打印它们,但我无法将这一行从客户端发送到服务器并使其打印。如果有人可以提供帮助,我将不胜感激。

【问题讨论】:

  • 你没有socket来向服务器发送数据,数据应该如何传输?
  • 感谢您的快速回复,但对不起,我对此很陌生,但您介意解释一下您的意思吗?我以为Printwriter出来了,向服务器发送数据。我应该如何解决这个问题?有什么提示吗?
  • 我猜你的代码不完整,BufferedReader in = new BufferedReader(new 的行突然结束了。 :-)
  • 抱歉网站不让我发这么大的一行,所以我忘了按回车放在下一行,现在已经修好了,但代码还是不行跨度>

标签: java network-programming client-server


【解决方案1】:

这只是一个错误。当您将 Serverside.java 中的第 65 行更改为:

System.out.println(input);

clientside.java 中的第 16 行到:

out.println("Hello server, end session");

它有效。所以服务器端用“System.out”代替“out”,客户端用“println”代替“\n”。

【讨论】:

  • 我注意到了这一点,对我的愚蠢感到非常用力,愤怒地冲出了房子,但谢谢:)
猜你喜欢
  • 2014-05-12
  • 1970-01-01
  • 2012-12-26
  • 2011-09-05
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多