【小程序】使用TCP協(xié)議實現(xiàn)客戶端和服務(wù)端直接交互

====================客戶端=========================

/*

* 客戶端與服務(wù)端互動

* 說明:

* 1.使用的BufferedReader的readLine()方法要加上\r\n才能把數(shù)據(jù)輸入;

* 2. 使用字符流一定要使用flush()才能把數(shù)據(jù)寫出;

*/

package com.lin.michael;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.InetAddress;

import java.net.Socket;

import java.net.UnknownHostException;

public class Client {

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

//1.建立客戶端TCP服務(wù),指定與此通信的服務(wù)器的IP和port

Socket socket = new Socket(InetAddress.getLocalHost(), 9090);

//2.獲取Socket對象的輸出流,并且使用轉(zhuǎn)換流轉(zhuǎn)化成字符輸出流

OutputStreamWriter socketOut = new OutputStreamWriter(socket.getOutputStream());

//3. 從鍵盤的輸入流讀取數(shù)據(jù)

BufferedReader? keyReader = new BufferedReader(new InputStreamReader(System.in));

//從服務(wù)端讀取回送數(shù)據(jù),獲取Socket的輸入流對象

BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

//4.寫出數(shù)據(jù)

String line = null;

while((line=keyReader.readLine())!=null){

socketOut.write(line+"\r\n");

socketOut.flush();

System.out.println("服務(wù)端回送的數(shù)據(jù)是:" + socketReader.readLine());

}

//5.關(guān)閉資源

socket.close();

}

}


=====================服務(wù)端===============================

package com.lin.michael;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class Server {

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

//1.創(chuàng)建服務(wù)端tcp服務(wù),堅挺端口

ServerSocket serverSocket = new ServerSocket(9090);

//2.接受服務(wù)端的連接并產(chǎn)生一個socket

Socket socket = serverSocket.accept();

//3.獲取socket的輸入流對象,并轉(zhuǎn)換成字符輸入流

BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

//獲取socket的輸出流對象

OutputStreamWriter socketOut = new OutputStreamWriter(socket.getOutputStream());

//讀取從鍵盤輸入

BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in));

//4.讀取客戶端的數(shù)據(jù)

String line = null;

while((line=socketReader.readLine())!=null){

System.out.println("服務(wù)端接收到的資源:" + line);

System.out.println("輸入個客戶端的數(shù)據(jù):");

socketOut.write(keyReader.readLine()+"\r\n");

socketOut.flush();

}

serverSocket.close();

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容