1. 程式人生 > 其它 >Java Socket 收發訊息入門例子(學習筆記)+服務端和客戶端互聊(使得服務端也能傳送資料,客戶端也能接受資料,並且可以一直持續下去)

Java Socket 收發訊息入門例子(學習筆記)+服務端和客戶端互聊(使得服務端也能傳送資料,客戶端也能接受資料,並且可以一直持續下去)

技術標籤:socket網路

//收發數字
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {
	
	public static void main(String[] args) {
		try {
			//連線到本機的8888埠
			Socket s = new Socket("127.0.0.1",8888);
			System.out.println
(s); //開啟輸出流 OutputStream os = s.getOutputStream(); os.write(100); os.close(); s.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
}
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	public static void main(String[] args) {
		try {
			//服務端開啟埠8888
			ServerSocket ss = new ServerSocket(8888);
			//在8888埠上監聽,看是否有連線請求過來
			System.out.println("監聽在埠號:8888"
); Socket s = ss.accept(); //開啟輸入流 InputStream is = s.getInputStream(); int msg = is.read(); System.out.println(msg); is.close(); System.out.println("有連線過來" + s); s.close(); ss.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

==================================================

import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Client1 {
	public static void main(String[] args) {
		try {
			Socket s = new Socket("127.0.0.1",8801);
			
			//開啟輸出流
			OutputStream os = s.getOutputStream();
			
			DataOutputStream dos = new DataOutputStream(os);
			//使用此句,每次不同的字串,都要修改程式碼
			//可使用Scanner在控制檯輸入
//			dos.writeUTF("Legendary!");
		
			Scanner sc = new Scanner(System.in);
			String str = sc.next();
			dos.writeUTF(str);
			
			dos.close();
			os.close();
			s.close();
			
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

//收發字串
public class Server1 {
	public static void main(String[] args) {
		try {
			ServerSocket ss = new ServerSocket(8801);
			System.out.println("監聽埠號:8801");
			
			Socket s = ss.accept();
			
			System.out.println("有連線過來:" + s);
			
			InputStream is = s.getInputStream();
			
			DataInputStream dis = new DataInputStream(is);
			
			String msg = dis.readUTF();
			
			System.out.println(msg);
			
			dis.close();
			is.close();
			s.close();
			ss.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

使得服務端也能傳送資料,客戶端也能接受資料,並且可以一直持續下去

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class TestClient {
	
	public static void main(String[] args) {
		try {
			Socket s = new Socket("127.0.0.1",8898);
			
			//開啟輸出流
			OutputStream os = s.getOutputStream();
			DataOutputStream dos = new DataOutputStream(os);
			
			//開啟輸入流
			InputStream is = s.getInputStream();
			DataInputStream dis = new DataInputStream(is);	
			
			while(true) {
				Scanner sc = new Scanner(System.in);
				String str = sc.next();
				dos.writeUTF(str);
				
				String msg = dis.readUTF();
				System.out.println("收到服務端的資訊:" + msg);
				
				
			}
			
			
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

import java.net.Socket;
import java.util.Scanner;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
//服務端和客戶端互聊天
//使得服務端也能傳送資料,客戶端也能接受資料,並且可以一直持續下去
public class TestServer {
	public static void main(String[] args) {
		try {
			ServerSocket ss = new ServerSocket(8898);
			
			Socket s = ss.accept();
			
			System.out.println("監聽在埠號:8898");
			
			//開啟輸入流
			InputStream is = s.getInputStream();
			DataInputStream dis = new DataInputStream(is);
			
			//開啟輸出流
			OutputStream os = s.getOutputStream();
			DataOutputStream dos = new DataOutputStream(os);
			
			while(true) {
				String msg = dis.readUTF();
				System.out.println("收到客戶端訊息"+msg);
				Scanner sc = new Scanner(System.in);
				String str = sc.next();
				dos.writeUTF(str);
				
			}
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

}

在這裡插入圖片描述
在這裡插入圖片描述
網路程式設計系列教材 (二)- Java Socket 收發訊息入門例子