Java常用應用——Socket(一)

基於TCP的Socket傳輸

Tips:先有服務端,後有客戶端

客戶端與服務端傳輸的流程
在這裏插入圖片描述

socket是服務端與客戶端傳輸的關鍵

步驟

1、服務端暴露自己的端口號
2、客戶端通過服務端暴露的端口號,使用本機的 ip 地址訪問服務端
3、服務端通過accept()監聽客戶端是否訪問

傳輸信息

OuputStream 輸出流發送消息
out.write(…) 發送的消息
InputStream 輸入流接受消息
in.read(…) 接受的消息存於…

代碼

服務端
package com.yanqun.socket;

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

public class Server {
	public static void main(String [] args) throws IOException {
		
		ServerSocket server = new ServerSocket(9999);//綁定端口號9999,暴露服務
		
		//監聽客戶端是否發來連接
		Socket socket = server.accept();
		
//		System.out.println("服務端與客戶端連接成功");
		
		//給客戶端發送消息
		OutputStream out = socket.getOutputStream();
		out.write("hello".getBytes());
		
		//接受客戶端的消息
		byte[] bs = new byte[100];
		InputStream in = socket.getInputStream();
		in.read(bs);
		System.out.println("客戶端反饋的消息爲:" + new String(bs));
		
		in.close();
		out.close();
		socket.close();
		server.close();
	}
}

客戶端
package com.yanqun.socket;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class client {

	public static void main(String[] args) throws UnknownHostException, IOException {

		Socket client = new Socket("127.0.0.1",9999);//本機ip地址鏈接端口號爲9999的服務端
		
		//接受服務端的消息
		InputStream in = client.getInputStream();
		byte[] bs = new byte[100];
		in.read(bs);
		System.out.println("從服務端發送過來的消息爲:" + new String(bs));
		
		//給服務端做出反饋
		OutputStream out = client.getOutputStream();
		out.write("world".getBytes());
		
		out.close();
		in.close();
		client.close();
		
	}

}

運行

1、先運行服務端
2、再運行客戶端

String於byte[]的轉換

1、String 轉 byte[] 的方法: 字符串 . getBytes()
2、byte[] 轉 String 的方法 : new String(…)

Java常見應用——Socket文件(二)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章