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();//
        }

    }

}

你可能感兴趣的:(Socket 编程 (网络篇))