java - 如何测试示例 TCP Socket 程序

标签 java sockets tcp

我有一个想要运行的示例 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(); 
                   
    } 
}

这里有什么不对吗?

这正是我所做的

step1
(来源:skitch.com)

step2
(来源:skitch.com)

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

最佳答案

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

关于java - 如何测试示例 TCP Socket 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11495605/

相关文章:

java - 在 Web 应用程序的不同用户之间共享对象的正确方法

java - 如何在多模块maven项目中单独运行多个模块

c++ - 如何将图像转换为缓冲区,以便我可以使用套接字编程将其发送过来? C++

linux - 为什么 ARP 请求非本地地址?

java - 如何根据组合框中的值修改JDialog框中其他字段的值

JAVA:调用未知对象类方法并传递它的参数

sockets - 使用 ResourceT 清理资源的正确方法是什么?

c - 套接字 - 如何找出分配给我的端口和地址

visual-studio-2010 - VS2010远程调试默认传输问题

sockets - 从没有数据大小的lua tcp套接字接收数据