簡單的TCP通訊實例


Server(服務器端):

package TCPDemo;
/**
 * 簡單的TCP通訊
 */
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	Server(){
		try {
			int port = 8000;
			//監聽8000端口,生成監聽對象
			ServerSocket server = new ServerSocket(port);
			//判斷是否有人來鏈接
			Socket socket = server.accept();
			if(socket!=null) {
				System.out.println("some thing coming");
			}
			//找到輸入和輸入端口,並進行封裝
			InputStream is = socket.getInputStream();
			OutputStream os = socket.getOutputStream();
			//
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			//true 代表刷新緩衝區
			PrintWriter pw = new PrintWriter(os,true);
			//循環發送和接收
			for(int i = 0; i<10; i++) {
				System.out.println("服務器");
				//接收
				String message = br.readLine();
				System.out.println(message);
				//發送
				pw.println("響應服務");
				Thread.sleep(2000);
			}
			pw.close();
			br.close();
			is.close();
			pw.close();
			isr.close();
			os.close();
			socket.close();
		} catch (Exception e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		new Server();
	}
}
Client(客戶端):

package TCPDemo;
/**
 * 簡單的TCP通訊
 */
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class Client {
	Client(){
		try {
			//127.0.0.1 是本機,在本例中,本機即做客戶端,又做服務器
			InetAddress ip= InetAddress.getByName("127.0.0.1");
			//服務器的端口號
			int port = 8000;
			//向服務器發出鏈接請求
			Socket socket = new Socket(ip,port);
			//判斷是否鏈接成功
			if(socket!=null) {
				System.out.println("link success");
			}
			//找到SOCKET的輸入和輸出的接口
			InputStream is = socket.getInputStream();
			OutputStream os = socket.getOutputStream();
			//對輸入和輸入接口進行封裝
			InputStreamReader isr = new InputStreamReader(is);
			BufferedReader br = new BufferedReader(isr);
			//true代表對緩衝區進行刷新
			PrintWriter pw = new PrintWriter(os,true);
			for(int i = 0; i<10; i++) {
				System.out.println("客戶端");
				//發送請求
				pw.println("服務請求");
				//接收請求
				String message = br.readLine();
				System.out.println(message);
				Thread.sleep(2000);
				
			}
			//關閉資源
			pw.close();
			br.close();
			is.close();
			pw.close();
			isr.close();
			os.close();
			socket.close();
		} catch (Exception e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		new Client();
	}
}

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