java - 从单独的方法中引用套接字

标签 java sockets networking

我正在尝试学习 Java,这只是我的第二天,所以如果这有点初级,我深表歉意。我正在创建一个聊天客户端,它连接到我之前创建的服务器(它是用 C 编写的)。客户端程序已设置为具有 outTextAreainTextAreasendButton(非常基本的东西,但仍然 - 获取基础知识向下)。我希望聊天客户端在程序打开时打开套接字,当前在 main 中打开(隐藏连接信息):

    Socket sock = new Socket("theServer", 0000);

我知道程序连接正确,并保持打开状态 - 当 IP 连接到服务器时,服务器当前会打印出来,然后在连接关闭时会出现段错误。

问题是:当我单击 sendButton 时,我试图通过该套接字发送在 outTextArea 中键入的字符串:

public void send(String outbuffer) throws Exception {
   sendButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                sendMessage sender = new sendMessage();
                sender.send(outTextArea.getText());
        }
});

sendMessage 类:

System.out.println(outbuffer);
PrintStream printer = new PrintStream(sock.getOutputStream());
printer.println(outbuffer);

在这里我意识到我无法通过 sock 发送,它是在 main 类中创建的。

我很好奇如何访问创建的套接字,是否有其他方法可以发送消息而无需每次都创建新连接。非常感谢任何建议,谢谢。

最佳答案

有两种基本方法 - 套接字可以是包含套接字和使用它的方法的类中的实例变量,或者调用者可以将套接字传递给该方法。在后一种情况下,除了现在的字符串之外,该方法还将有第二个参数。还有其他可能性,但其中一种应该最适合您的情况。

如果我也可以发表一个意见:对于仍在弄清楚变量范围和参数传递问题的人来说,套接字编程似乎有点先进。在尝试解决网络问题之前,您可以尝试更简单的方法来更好地了解基础知识。

关于java - 从单独的方法中引用套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16970760/

相关文章:

C windows 套接字在第一次执行时永远被阻塞

c - 套接字编程将多个客户端连接到一台服务器并列出它们 C

python - 无法两次写入python中的套接字

azure - 无法使用虚拟 IP 从我的 Azure 网站连接到 Azure 云服务?

java - 为什么嵌套的子类可以访问其父类的私有(private)成员,而孙子却不能?

java - 如何将文本颜色设置为 TextArea 中的特定字符串?

java - 从 TEXT_DETECTION 返回的 JSON 文件格式不正确

java - 以编程方式连接到 wifi 网络(首先访问 ssid)?

debugging - Laradock + PhpStorm + Xdebug 失败,而 PhpStorm 验证成功

java - FirebaseListAdapter 不为聊天应用程序推送单个项目 - Firebase-Ui 3.1