Java 套接字。服务器-客户端通信

2023-12-07

我正在尝试将带有 gui 的客户端与没有 gui 的服务器连接。连接正在完成,但我看不到这两个应用程序之间的任何消息。 (我应该在客户端中获取 SERVER HERE,在服务器中获取 CLIENT HERE)

客户端连接代码:

@Override
public void ClientRunning(){
    try {
       connectToServer();
        setStreams();
        ClientRun();

    }catch(EOFException oefException){
        showMessage("\n Client terminated the connection\n");
    }catch(IOException ioException){
        ioException.printStackTrace();
    }finally{
        close();
    }
}



public void connectToServer() throws IOException{
    showMessage("Attempting Connection... \n");
    connection = new Socket(InetAddress.getByName(serverIP),6789);
    showMessage("Connected to: "+ connection.getInetAddress().getHostName());
}


public void setStreams() throws IOException{
   output = new PrintWriter(connection.getOutputStream(),true);
   output.flush();
   input= new BufferedReader(new InputStreamReader(connection.getInputStream()));

    showMessage("\n Streams are now set. \n");
}

public void close(){
    showMessage("\n closing...");
    try{
      output.close();
      input.close();
      connection.close();

    }catch(IOException ioException){
        ioException.printStackTrace();
    }
}
public void showMessage(final String text){
    SwingUtilities.invokeLater(new Runnable(){
        public void run(){
            cwindow.append(text);
        }
    });
}

public void sendMessage(String message){
    output.write("CLIENT - "+message);
    output.flush();
    showMessage("\nCLIENT - "+message);
}

private void ClientRun() throws IOException{
    String message="CLIENT HERE!";
    sendMessage(message);
    do{
        try{
            message=input.readLine();
            showMessage("\n"+message);
        }catch(EOFException eofException){
                showMessage("\n Server ended the connection!");
    }

    }while(message!="EXIT");
    }

(输入和输出在 GUI 类中定义,该 Client 类扩展为该 GUI 类。定义为“受保护的 BufferedReader 输入; 受保护的 PrintWriter 输出;”)

另外,服务器代码:

public class ServerClass {


private ServerSocket server;
private Socket connection;
private BufferedReader input;
private BufferedWriter output;


public void startServer(){
    try{
        server=new ServerSocket(6789,100);
        while(true){
            try{
                waitForConnection();
                setStreams();
                ServerRunning();
            }catch(EOFException eofException){
                showMessage("\n Server ended the connection!");

            }finally{
            close();

        }
        }

    }catch(IOException ioException){
        ioException.printStackTrace();
    }
}

private void waitForConnection() throws IOException{
    showMessage("Waiting for someone to connect... \n");
    connection=server.accept();
    showMessage("Now connected to "+ connection.getInetAddress().getHostName());
}

private void setStreams() throws IOException{
   output = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
   output.flush();
   input= new BufferedReader(new InputStreamReader(connection.getInputStream()));

    showMessage("\n Streams are now set. \n");
}
public void ServerRunning() throws IOException{
    String message="SERVER HERE!";
    sendMessage(message);
    do{
        try{

            message=input.readLine();
            showMessage("\n"+message);
        }catch(EOFException eofException){
                showMessage("\n Server ended the connection!");
    }

    }while(message!="EXIT");

  }
private void close(){
    showMessage("\n Closing connections... \n");
    try{
        output.close();
        input.close();
        connection.close();

}catch(IOException ioException){
    ioException.printStackTrace();
}
}
private void showMessage(String text){
    System.out.println(text);
}

private void sendMessage(String message){
    try{
       output.write("SERVER - "+message);
        output.flush();
        showMessage(message);
    }catch(IOException ioException){
        System.out.println("\n ERROR!");
    }
}

连接似乎没问题,所以我不明白有什么问题。任何帮助,将不胜感激。

PS:我也在服务器中尝试了PrintWriter,并在流语句中尝试了try catch,问题仍然存在。


你正在使用readLine()它需要一个换行符。要么添加一个\n您正在发送或不使用的消息readLine().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 套接字。服务器-客户端通信 的相关文章

随机推荐

  • 用户身份验证后重定向回页面选项卡?

    在用户验证我的应用程序后 我应该如何将用户重定向回我的页面选项卡 我无法输入一个特定的网址进行重定向 因为我的应用程序将驻留在多个页面上 所以我需要以某种方式获取页面的 id 并将其放入 url 中 我尝试过使用会话变量 但它似乎对我不起作
  • PHP 四舍五入不起作用

    我有这个代码 我想将两位小数四舍五入到一半 我期望值为 0 58 但上面的代码打印 0 57 我怎样才能做到这一点 如果您期望 0 58 则不必使用 半轮 而是使用 ceil 函数 v 0 575 echo ceil v 100 100 s
  • SQLAlchemy 中的编译扩展:索引中使用的函数

    我想在 SQLAlchemy 中创建一个不区分大小写的唯一约束 它可以与 Postgres 和 SQLite 一起使用 在Postgres中是这样实现的 SQL CREATE UNIQUE INDEX my index ON my tabl
  • 删除前面没有 NULL 的换行符

    我有一串数据 在我需要删除的行中插入了随机 CRLF 并以正确的 CRLF 结束了我需要保留的数据 我尝试使用 Notepad 正则表达式尝试将以下内容替换为空 NULL r n 但是 它不会删除插入的 CRLF 关于如何在 Notepad
  • 使用用户输入创建新对象 [JAVA]

    您好 我正在尝试创建一个程序 每当用户输入某个对象的新信息时就创建一个新对象 目前我有这个 import java util Scanner public class Main public static void main String
  • 无法销毁使用 Core Data 和 SQLite 创建的持久存储

    我有一个 iOS 应用程序 我想在每次启动时都从一个新的核心数据数据库开始 存储类型是 SQLite 但是 当我调用 persistenceStoreCoordinator destroyPersistentStore 时 100 都会收到
  • 通过 preg_replace 使用文本中的电话号码

    我可以使用 preg replace 在文本中查找电话号码 text preg replace d s 8 25 0 9 d strong 1 strong text 但是 我正在开发一个小功能 其中电话号码将被混淆 因此我需要实际的电话号
  • 是否有适用于 iphone sdk 的谷歌日历 api?

    有没有适用于 iphone sdk 的谷歌日历 api 目前我开发了一个 iphone 日历本机应用程序 在此应用程序中 我想从两侧与谷歌日历同步 所以我想知道是否有任何谷歌日历 API 可以完成这项工作 I found iphone gc
  • 上下文菜单的 SwiftUI 自定义视图

    我想在视图上长按手势时实现相同的自定义弹出视图 如照片 来自 Tweeter 应用程序 所示 这样我就可以同时显示自定义视图和上下文菜单 您需要进行定制ContextMenu using UIContextMenu from UIKit s
  • 我的 getJSON 调用随机返回结果,而不是它们被调用的顺序

    我需要制作多个getJSON请求将数据写入 HTML 文件 此示例显示了 3 个请求 但我将以相同的格式添加最多 6 个请求 可能更多 我的问题是结果以随机顺序返回 而不是按调用顺序返回 我怀疑它们是按照请求完成的顺序返回的 我每次都必须以
  • SQL 中的空字符文字是什么?

    我想知道 a 的字面意思是什么空字符 例如 0 在 SQL 中 Note 不是 NULL 字段值 而是空字符 see link 我有一列混合了典型字符和空字符 我正在尝试用不同的值替换空字符 我本以为以下内容会起作用 但没有成功 selec
  • 如何在 Swift 中按长度反向/降序对字符串数组进行排序?

    我想根据长度按降序排列字符串集合 首先 我不确定是否应该使用集合或数组 因为集合是无序事物的集合 并且我不需要集合中的元素必须位于有序集合中 我遇到了sorted 方法和sorted by 方法 但无法弄清楚如何按长度降序排列 仅按字母顺序
  • 使 WPF 数据网格中的行不可聚焦

    我试图弄清楚如何使以下 WPF DataGrid 中的行不可聚焦 正如你所看到的 我尝试添加一个
  • Unity C#,如何从另一个脚本调用函数来启动动画?

    using UnityEngine using System Collections public class ClickToMoveScript MonoBehaviour public string Chopping Chopping
  • 加载图像时出现内存不足异常

    我使用以下代码将图像作为缩略图加载到 FlowLayoutPanel 控件 不幸的是我遇到了 OutOfMemory 异常 正如您已经猜测的那样 内存泄漏是在该行发现的 Pedit Image System Drawing Image Fr
  • 使用流畅的 nhibernate 自动映射 IDictionary

    我有一个简单的类 如下所示 public class Item some properties public virtual IDictionary
  • 在我的 flutter 应用程序中使用 Agora rtc 引擎时出现问题

    我在使用 agora rtc 引擎时遇到问题 每次启动项目时我都会收到此错误消息 https pastebin com DuniUQYd 我不知道问题是什么 因为错误消息对我来说不是很清楚 在代码中 我还发布了我正在使用的频道名称应用程序
  • 为什么 ostream_iterator 没有按预期工作?

    不用多说 就是下面的代码 include
  • Android 上的 OpenCV - 标头;没有该文件/目录

    所以我对使用 Android 的 JNI 很陌生 如果这是愚蠢的事情 请提前抱歉 我已经安装了 SDK 并在 Eclipse 中将其添加为项目的库 完成所有操作后 我尝试运行 ndk build 函数 但出现此错误 Compile thum
  • Java 套接字。服务器-客户端通信

    我正在尝试将带有 gui 的客户端与没有 gui 的服务器连接 连接正在完成 但我看不到这两个应用程序之间的任何消息 我应该在客户端中获取 SERVER HERE 在服务器中获取 CLIENT HERE 客户端连接代码 Override p