簡體   English   中英

通過套接字發送字符串

[英]Sending Strings through Sockets

這是服務器

public class SocketMsg {

    public static void main(String[] args) throws IOException{
    ServerSocket ss = new ServerSocket("number goes here");


    System.out.println("Server Ready");
    ss.accept();


    }
    }

客戶:

public class SocketMesg {



public static void main(String[] args) throws IOException{
  Socket socket = null;
    OutputStreamWriter osw;
    String str = "Hello World";
    try {
        socket = new Socket("localhost", "number goes here");
        osw =new OutputStreamWriter(socket.getOutputStream());
        osw.write(str, 0, str.length());
    } catch (IOException e) {
        System.err.print(e);
    } 
    finally {
        socket.close();
    }

}

就個人而言,代碼可以工作,但是字符串沒有發送到其他主機,我給了他們相同的號碼,但是它不起作用。 客戶端將其發送回DOS窗口上的服務器。 我做錯了嗎? 我做錯了什么?

您的服務器端至少需要以下內容。

Socket clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));


String inputLine;
while ((inputLine = in.readLine()) != null) {
    // process inputLine;
}

您需要刷新輸出流以將寫緩沖區提交到套接字。 如果編寫字符串,也要注意字符集。 本示例通過“低級”字節數組緩沖區顯式使用UTF-8。 我認為您正在練習您的第一個套接字編程,因此我保持了非常簡單的狀態。

服務器.java

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

public class Server {

    public static void main(String[] args) throws Exception {
        ServerSocket ss = new ServerSocket(1122);
        System.out.println("Server Ready");
        while(true) {
            Socket socket = ss.accept();
            InputStream is = socket.getInputStream();
            // client must send 1-10 bytes, no more in single command
            byte[] buf = new byte[10]; 
            int read = is.read(buf, 0, buf.length);
            String cmd = new String(buf, 0, read, "UTF-8");
            System.out.println(cmd);
            socket.close(); // we are done, this example reads input and then closes socket
        }
    }

}

客戶端.java

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

public class Client {

    public static void main(String[] args) throws Exception {
        Socket socket = null;
        // send max of 10 bytes to simplify this example
        String str = "ABCDEFGHIJ"; 
        try {
            socket = new Socket("localhost", 1122);
            OutputStream os = socket.getOutputStream();
            byte[] buf = str.getBytes("UTF-8");
            os.write(buf, 0, buf.length);
            os.flush();
        } catch (IOException ex) {
            System.err.print(ex);
        } finally {
            socket.close();
        }
    }

}

暫無
暫無

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

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