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