簡體   English   中英

通過Java中的套接字發送和接收數據

[英]Sending and Receiving Data Through Sockets in Java

好的,就像標題所說的那樣,我對如何通過輸入和輸出流發送字符串感到困惑。 我正在制作一個基本的登錄服務器,希望能夠單擊“登錄”並具有登錄憑據以保存在服務器端。 這就是我所擁有的。

這是我的登錄按鈕的動作事件內的try塊:

                                try {
                                Socket socket = Client.s;
                                OutputStream dOut = Client.s.getOutputStream();
                                PrintWriter socketOut = new PrintWriter(dOut);

                                username = jTextField1.getText();
                                password = jPasswordField1.getText();

                                //System.out.println("Username: " + username);
                                //System.out.println("Password: " + password);

                                socketOut.println(username);
                                socketOut.flush();

                                socketOut.println(password);
                                socketOut.flush();

                                socketOut.println("Click");
                                socketOut.flush();


                        } catch (Exception e){
                            e.printStackTrace();
                        }

這是服務器端的我的代碼。 我試圖接收和存儲數據,但是它不起作用,我不太確定為什么。 我也有一些無用的循環,最終將它們刪除(忽略這些循環):

 BufferedReader socketIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
     String str = socketIn.readLine();
while (buttonClicked == false){
    int done = 0;
  String messageType = socketIn.toString();     
    while(done == 0) {

      switch(messageType)
      {
      case "username": // Type A
          username = socketIn.toString();
        System.out.println("username: " + username);
        break;
      case "password": // Type B
          password = socketIn.toString();
        System.out.println("Password: " + password);
        break;
      case "Click":
          buttonClicked = true;
          break;
      }

請注意,我知道我缺少右括號,我只復制了部分代碼。

BufferedReader socketIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
     String str = socketIn.readLine();
while (buttonClicked == false){
    int done = 0;
  String messageType = socketIn.toString();     
    while(done == 0) {

      switch(messageType)
      {
      case "username": // Type A
          username = socketIn.toString();
        System.out.println("username: " + username);
        break;
      case "password": // Type B
          password = socketIn.toString();
        System.out.println("Password: " + password);
        break;
      case "Click":
          buttonClicked = true;
          break;
      }

您采用流的.toString()socketIn.toString(); ),應使用str

BufferedReader socketIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
     String str = socketIn.readLine();
while (buttonClicked == false){
    int done = 0;  
    while(done == 0) {

      switch(str)
      {
      case "username": // Type A
          username = str;
        System.out.println("username: " + username);
        break;
      case "password": // Type B
          password = str;
        System.out.println("Password: " + password);
        break;
      case "Click":
          buttonClicked = true;
          break;
      }

但是,無論如何,我認為這不是您想要的……我的意思是,當他通過“密碼”時,密碼就是密碼。

也許你想要

BufferedReader socketIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
     String str = socketIn.readLine();
while (buttonClicked == false){
    int done = 0;  
    while(done == 0) {

      switch(str)
      {
      case "username": // Type A
          username = socketIn.readLine();
        System.out.println("username: " + username);
        break;
      case "password": // Type B
          password = socketIn.readLine();
        System.out.println("Password: " + password);
        break;
      case "Click":
          buttonClicked = true;
          break;
      }

從輸入中讀取新行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM