在单个系统上运行客户端/服务器编 [英] running a client/server prog on a single system

查看:80
本文介绍了在单个系统上运行客户端/服务器编的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道是否有两个程序,一个叫做 server ,另一个叫做 client ,这两个在说明分别是服务器和客户端,是否可以在一台计算机上对其进行测试?考虑到我对客户端套接字的定义如下:

im wondering if there are two programs, one called server and the other called client and these two are illustrating a server and client respectively, is it possible to test them in one machine? considering i defined the client socket as follow:

socket = new Socket("127.0.0.1",3000);

编辑:
服务器部分:

Server part:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

class TCPServer
{
       private static ServerSocket serverSocket;
        private static Socket socket;
        private static PrintWriter toClient;
        private static BufferedReader fromClient;
        public static void run() throws IOException
            {
            System.out.println("Server is waiting for connections...");
            while (true)
            {
                openStreams();
                processClient();
                closeStreams();
            }

        }

        public static void openStreams() throws IOException
            {
            serverSocket = new ServerSocket(3000);
            socket = serverSocket.accept();
            toClient = new PrintWriter(socket.getOutputStream(),true);
            fromClient = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        }
        public static void closeStreams() throws IOException
            {
            fromClient.close();
            toClient.close();
            socket.close();
            serverSocket.close();
        }
      public static void processClient()throws IOException
{
    String msg = null;
    do {
        msg = fromClient.readLine();
        toClient.println("Client said " + msg);
    } while (!"exit".equals(msg));
}

        }

客户端部分:

package clientserver.pkg1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

class TCPClient
{
      private PrintWriter toServer;
            private BufferedReader fromServer;
            private Socket socket;
            public void Client( )throws IOException
                {
                socket = new Socket("127.0.0.1",3000);
            }
            public void openStreams() throws IOException
         {

                toServer = new PrintWriter(socket.getOutputStream(),true);
                fromServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            }
            public void closeStreams() throws IOException
                {
                fromServer.close();
                toServer.close();
                socket.close();
            }
          public void run()throws IOException
{
    openStreams();
    String msg = "";
    Scanner scanner = new Scanner(System.in);
    while (!"exit".equals(msg))
    {
        System.out.print(">");
        msg = scanner.nextLine();
        toServer.println(msg);
        String tmp = fromServer.readLine();
        System.out.println("Server said: " + tmp);
    }
    closeStreams();
}

            }

主班

public static void main(String[] args) {

       try
            {
                 TCPServer server = new TCPServer() {};
                 TCPClient client = new TCPClient();
                 client.run();
                 server.run();




            }
            catch(IOException e)
            {
                 System.err.println("Error in Client " + e.getMessage());
            }




java.lang.NullPointerException



1



1

toServer = new PrintWriter(socket.getOutputStream(),true);



2



2

      public void run()throws IOException
{
    openStreams();
.....
}



3



3

 public static void main(String[] args) {

       try
            {
                 TCPClient client = new TCPClient();
                 client.run();
            }

client.run();

推荐答案

您当然可以,只需将客户端和服务器连接到相同的端口号即可。

You certainly can, just have the client and server connected to the same port number.

这篇关于在单个系统上运行客户端/服务器编的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆