Socket 編程 (網絡篇)

Socket (ip,port)任何臺機兩個要連在一起需要 ip和port ( 端口 監聽)。只要port相同。
一臺機器有幾個程序,每個程序需要一個端口,傳遞接受包。網站的端口80。
ServerSocket ( port )服務器打開。
如果Socket s1發出消息,accept ( ) 接受以后創建Socket s2與之對應。
Socket s2 = accept ;
Socket的兩個類,InputStream(輸入),OutputStream(輸出).

package Server;
//控制臺找ip:ipconfig
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {

    public static int port=3000;
    public static final String ip="192.168.31.146";
    public static void main(String[] args) {
//      System.out.println("開始"+port+"連上啟動服務器。。。");
        
        try{
            ServerSocket ss = new ServerSocket(port);//創建Socket 傳入值。
            System.out.println("成功啟動服務器,端口:"+port);
            Socket socket = ss.accept();//打開服務器。接受數據,返回socket
            System.out.println("連上客戶端。。。");
            
            BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));//寫數據
            BufferedWriter output = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));//出數據
            
            String clientMsg;//發送的數據
            String serverMsg;//接受的數據
            
            Scanner sc = new Scanner(System.in);
            clientMsg = input.readLine();
            
            while(clientMsg !="bye"){
                System.out.println(clientMsg);

                serverMsg = sc.nextLine();//等待發消息
                output.write(serverMsg+"\r\n");
                output.flush();//發送
                
                clientMsg = input.readLine();
            }
            sc.close();
            ss.close();//socket端口關閉
            
        }catch(IOException e){
            e.printStackTrace();
        }
    }

}

package Server;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;

public class Client {
    //s.getInputStream(字節)->InputStreamReader(字符)->Buffered(句子,可以定時發送。)客戶端也可使用,取決于需求。
    public static int port=3006;
    public static final String ip="192.168.31.146";//連接其他的客戶端。
    
    public static void main(String[] args) {
        
        try{
            Socket s = new Socket(ip,port);//創建Socket 傳入值。
            System.out.println("連上服務器端。。。");
            BufferedReader input = new BufferedReader(new InputStreamReader(s.getInputStream()));//放數據
            BufferedWriter output = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//拿數據
            String clientMsg;//發送數據
            
            String serverMsg;//接受數據
            
            Scanner sc = new Scanner(System.in);
            clientMsg = sc.nextLine();
            
            while(clientMsg !="bye"){
                output.write(clientMsg+"\r\n"); //"\r\n"換行
                output.flush();//發送
                
                serverMsg = input.readLine();//等待發消息
                System.out.println(serverMsg);//打印消息
            }
            sc.close();
            s.close();
            
        }catch(IOException e){
            e.printStackTrace();//
        }

    }

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容