简体   繁体   English

Java套接字-读取服务器获取的数据的客户端

[英]Java Sockets - A Client that reads the data the server gets

I am working on a java socket program and have difulcites with the client part. 我正在使用Java套接字程序,并且客户端部分存在difulcites。 The server get's what all the clients write, but the client only gets what it writes. 服务器获取所有客户端写的内容,但是客户端仅获取它写的内容。 Could someone provide me with an example of a client part of a program that gets what all the clients write? 有人可以向我提供一个程序的客户端部分示例,该示例可以获取所有客户端编写的内容吗? Thanks! 谢谢!

Here is an "echo server" example 这是一个“回显服务器”示例

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

class TCPServer
{
public static void main(String argv[]) throws IOException
{
    ServerSocket serverSocket = null;
    DataInputStream serverInput = null;
    PrintStream serverOutput = null;
    String line = null;
    Socket clientSocket = null;

    // create server socket
    try
    {
        serverSocket = new ServerSocket(2012);
        clientSocket = serverSocket.accept();
        serverInput = new DataInputStream(clientSocket.getInputStream());
        serverOutput = new PrintStream(clientSocket.getOutputStream());
    }
    catch(IOException e){System.out.println(e);}


    // receive data and send it back to the client
    try
    {
        while(true)
        {
            line = serverInput.readLine();
            if(line.equals("exit"))
            {
                break;
            }
            else
            {
                if(!line.equals(null) && !line.equals("exit"))
                {
                    System.out.println("Received " +line);
                    line = line+" MODIFIED";
                    serverOutput.println(line);
                }
            }
        }
    }
    catch(IOException e){System.out.println("SERVER SIDE: Unable send/receive data");}

    try
    {
        serverInput.close();
        serverOutput.close();
        clientSocket.close();
        serverSocket.close();
    }
    catch(IOException e){System.out.println(e);}
}
}

Here is the client 这是客户

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

public class TCPClient
{
public static void main(String[] args) throws IOException 
{

    Socket echoSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;

    try {
        echoSocket = new Socket("localhost", 2012);
        out = new PrintWriter(echoSocket.getOutputStream(), true);
        in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
    } catch (UnknownHostException e) {
        System.err.println("Don't know about host");
        System.exit(1);
    } catch (IOException e) {
        System.err.println("Couldn't get I/O");
        System.exit(1);
    }

BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;

while ((userInput = stdIn.readLine()) != null) {
    out.println(userInput);
    System.out.println("echo: " + in.readLine());
    if(userInput.equals("exit"))
    break;
}

out.close();
in.close();
stdIn.close();
echoSocket.close();
}
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM