当前位置:  开发笔记 > 编程语言 > 正文

简单的Java客户端/服务器程序

如何解决《简单的Java客户端/服务器程序》经验,为你挑选了1个好方法。

我正在编写我的第一个java客户端/服务器程序,它只是建立与服务器的连接,然后发送一个句子,服务器将句子全部大写.这实际上是本书的一个例子,当我在同一台机器上运行客户端和服务器并使用localhost作为服务器地址时,它运行良好.但是,当我将客户端程序放在另一台计算机上时,它会超时并且永远不会与服务器建立连接.我不确定为什么会这样,而且它是一种蹩脚的制作你的第一个客户端/服务器程序而实际上无法在两台不同的机器上使用它.这是客户端代码:

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

public 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("localhost", 6789);
        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(modifiedSentence);
        clientSocket.close();
    }
}

这是服务器代码:

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

public class TCPServer {
    public static void main(String args[]) throws Exception {
        String clientSentence;
        String capitalizedSentence;
        ServerSocket welcomeSocket = new ServerSocket(6789);

        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);
        }
    }
}

当我在两台不同的机器上运行时,我唯一改变的是客户端程序使用服务器程序(我从whatismyipaddress.com获得)使用机器的IP地址创建其套接字.非常感谢您的帮助.

更新:我确实在校园里,似乎它可能不允许我使用那个随机端口.有关找出我可以使用的端口和/或可能允许的端口的任何建议?



1> Chris H..:

这可能是防火墙问题.确保在服务器端端口转发要连接的端口.localhost直接映射到ip,并通过网络堆栈移动.您正在更改代码中的某些文本,但程序的工作方式基本相同.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有