1

我有一个想要运行的示例 TCP 客户端和服务器应用程序,但我不确定如何运行它们。它说我需要在一台主机上编译客户端程序,在另一台主机上编译服务器应用程序,但是当我只有一台计算机时,我不知道该怎么做。我知道这很简单,但我需要一些帮助才能开始。

这是示例 TCP 服务器应用程序:

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

class TCPServer {

public static void main(String argv[]) throws Exception 
{ 
  String clientSentence; 
  String capitalizedSentence;

  ServerSocket welcomeSocket = new ServerSocket(6790); 

  while(true) { 

               Socket connectionSocket = welcomeSocket.accept();

       BufferedReader inFromClient = 
         new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

       DataOutputStream  outToClient = 
         new DataOutputStream(connectionSocket.getOutputStream());

       clientSentence = inFromClient.readLine();

       capitalizedSentence = clientSentence.toUpperCase() + '\n';

       outToClient.writeBytes(capitalizedSentence); 
    } 
} 
} 

这是示例 TCPClient 应用程序

import java.io.*; 
import java.net.*; 
class TCPClient {

    public static void main(String argv[]) throws Exception 
    { 
        String sentence; 
        String modifiedSentence;

        BufferedReader inFromUser = 
          new BufferedReader(new InputStreamReader(System.in));

        Socket clientSocket = new Socket("10.0.1.2", 6790);

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

        BufferedReader inFromServer = 
          new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        sentence = inFromUser.readLine();

        outToServer.writeBytes(sentence + '\n');

        modifiedSentence = inFromServer.readLine();

        System.out.println("FROM SERVER: " + modifiedSentence);

        clientSocket.close(); 
                   
    } 
}

这里有事吗?

这正是我所做的

第1步
(来源:skitch.com

第2步
(来源:skitch.com

这是我第一次使用 Eclipse,所以我可能在那里做错了什么。我通常使用 DrJava,但由于某种原因,这并不能让我同时运行两者。

4

2 回答 2

4

几乎任何套接字程序都可以在同一台计算机上运行两半。只需在一个窗口中运行服务器,在另一个窗口中运行客户端,并指定连接地址 127.0.0.1(即localhost您自己的计算机)。

于 2012-07-15T21:07:01.913 回答
0

对于使用此代码的任何人,我只是单步执行该程序并看到连接已成功建立(如果您更改为适当的 IP,例如“localhost”)。然而,TCPServer 和 TCPClient 都首先执行 readLine,因此它们都被卡在等待永远不会出现的输入。改变其中一个先写点东西。

于 2017-11-27T14:32:29.450 回答