最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于socket發(fā)送數(shù)據(jù)需要注意的問題

 更新時間:2024年08月10日 09:07:59   作者:Soulic  
這篇文章主要介紹了關(guān)于socket發(fā)送數(shù)據(jù)需要注意的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

socket發(fā)送數(shù)據(jù)需要注意的問題

這兩天在寫socket通信的時候遇到一個問題,在服務(wù)器端使用BufferedWriter.write()和BufferedWriter.flush()向客戶端發(fā)送信息后,客戶端使用BufferedReader.readLine()怎么也讀不到數(shù)據(jù)。

后來發(fā)現(xiàn)是因為沒有在write之后創(chuàng)建新的行,所以客戶端的readLine()不能判斷行結(jié)束,一直在等待服務(wù)器發(fā)送行結(jié)束符,就出現(xiàn)客戶端接收不到數(shù)據(jù)的現(xiàn)象。

解決的方法

是在write()后newLine(),再flush()客戶端就可以了。

	ServerSocket server = null;
	try {
		server = new ServerSocket(AppProvider.PORT, 0);
		BufferedReader in;
		BufferedWriter out;
		while (true) {
			Socket client = server.accept();
			
			in = new BufferedReader(new InputStreamReader(client.getInputStream()));
			out = new BufferedWriter(new OutputStreamWriter(client.getOutputStream()));
			out.flush();
			try {
				String request = in.readLine();
				String response = processMessage(request);
				if (response != null) {
					out.write(response);
					out.newLine();  
					out.flush();
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			in.close();
			out.close();
			client.close();
		}
	} catch (IOException e) {
		e.printStackTrace();
	} finally {
		if (server != null && !server.isClosed()) {
			try {
				server.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

Java-socket上傳 / 接收文件

Socket上傳文件

//測試示例
public void upSocket(){
    //Java中使用Socket進行文件上傳的基本流程如下所示:
    //創(chuàng)建客戶端Socket對象并連接到服務(wù)器。可以通過指定IP地址和端口號來完成連接操作。
    String serverIp = "服務(wù)器IP"; // 設(shè)置服務(wù)器IP地址
    int port = 8080; // 設(shè)置服務(wù)器監(jiān)聽的端口號

    Socket clientSocket = null;
    InputStream inputStream = null;
    OutputStream outputStream = null;
    try {
        clientSocket = new Socket(serverIp, port);
        //獲取輸入/輸出流對象,分別用于讀取要發(fā)送的文件內(nèi)容和寫入從服務(wù)器返回的數(shù)據(jù)。
        String filePath = "要上傳的文件路徑";
        File fileToSend = new File(filePath);
        if (!fileToSend.exists()) {
            throw new IllegalArgumentException("指定的文件不存在!");
        }
        inputStream = new FileInputStream(filePath); // 設(shè)置要上傳的文件路徑
        outputStream = clientSocket.getOutputStream();
        //將文件內(nèi)容逐段讀取后寫入輸出流,直到文件結(jié)尾。
        byte[] buffer = new byte[4096]; // 設(shè)置每次讀取的字節(jié)大小
        int bytesRead;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, bytesRead);
        }
        outputStream.flush(); // 確保數(shù)據(jù)被全部寫入輸出流
    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        //關(guān)閉輸入/輸出流和Socket連接。
        try {
            inputStream.close();
            outputStream.close();
            clientSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Socket接收文件

public static void main(String[] args) throws IOException {
    int portNumber = 8080;

    ServerSocket serverSocket = null;
    InputStream inputStream = null;
    FileOutputStream fileOutputStream = null;
    try {
        serverSocket = new ServerSocket(portNumber);
        System.out.println("正在監(jiān)聽端口" + portNumber + "...");

        Socket clientSocket = serverSocket.accept();
        System.out.println("客戶端已連接!");

        inputStream = clientSocket.getInputStream();
        fileOutputStream = new FileOutputStream("D:\\test\\received_file.txt");

        byte[] buffer = new byte[4096];
        int bytesRead;
        while ((bytesRead = inputStream.read(buffer)) != -1) {
            fileOutputStream.write(buffer, 0, bytesRead);
        }


    } catch (IOException e) {
        e.printStackTrace();
    }finally {
        fileOutputStream.close();
        inputStream.close();
        serverSocket.close();
        serverSocket.close();
    }
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java字符串常用操作方法(查找、截取、分割)

    java字符串常用操作方法(查找、截取、分割)

    今天小編就為大家分享一篇java字符串常用操作方法(查找、截取、分割),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Java從零編寫吃貨聯(lián)盟訂餐系統(tǒng)全程講解

    Java從零編寫吃貨聯(lián)盟訂餐系統(tǒng)全程講解

    這篇文章主要介紹了Java訂餐系統(tǒng),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-12-12
  • 詳解Spring Boot Mysql 版本驅(qū)動連接池方案選擇

    詳解Spring Boot Mysql 版本驅(qū)動連接池方案選擇

    這篇文章主要介紹了詳解Spring Boot Mysql 版本驅(qū)動連接池方案選擇,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java 程序員容易犯的10個SQL錯誤

    Java 程序員容易犯的10個SQL錯誤

    本文介紹了Java 程序員容易犯的10個SQL錯誤。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • Java中的ReadWriteLock高效處理并發(fā)讀寫操作實例探究

    Java中的ReadWriteLock高效處理并發(fā)讀寫操作實例探究

    這篇文章主要為大家介紹了Java中的ReadWriteLock高效處理并發(fā)讀寫操作實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • springboot實現(xiàn)配置多環(huán)境yml方式

    springboot實現(xiàn)配置多環(huán)境yml方式

    在SpringBoot項目中,通過創(chuàng)建不同的YAML配置文件來實現(xiàn)多環(huán)境配置是一種常見且有效的方法,這些配置文件包括application.yml、application-dev.yml、application-prod.yml等,分別對應(yīng)不同的開發(fā)環(huán)境,如開發(fā)環(huán)境、生產(chǎn)環(huán)境
    2024-11-11
  • java中用數(shù)組實現(xiàn)環(huán)形隊列的示例代碼

    java中用數(shù)組實現(xiàn)環(huán)形隊列的示例代碼

    這篇文章主要介紹了java中用數(shù)組實現(xiàn)環(huán)形隊列的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Springboot之自定義全局異常處理的實現(xiàn)

    Springboot之自定義全局異常處理的實現(xiàn)

    這篇文章主要介紹了Springboot之自定義全局異常處理的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 登陸驗證碼kaptcha結(jié)合spring boot的用法詳解

    登陸驗證碼kaptcha結(jié)合spring boot的用法詳解

    在一個web應(yīng)用中驗證碼是一個常見的元素。不管是防止機器人還是爬蟲都有一定的作用,下面這篇文章主要給大家介紹了登陸驗證碼kaptcha結(jié)合spring boot用法的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-06-06
  • Spring?Boot基于?JWT?優(yōu)化?Spring?Security?無狀態(tài)登錄實戰(zhàn)指南

    Spring?Boot基于?JWT?優(yōu)化?Spring?Security?無狀態(tài)登錄實戰(zhàn)指南

    本文介紹如何使用JWT優(yōu)化SpringSecurity實現(xiàn)無狀態(tài)登錄,提高接口安全性,并通過實際操作步驟展示了如何配置JWT參數(shù)、實現(xiàn)JWT登錄接口、認證過濾器等,感興趣的朋友跟隨小編一起看看吧
    2025-11-11

最新評論

城市| 黄梅县| 博罗县| 张北县| 赤峰市| 土默特左旗| 石狮市| 青川县| 龙门县| 敖汉旗| 伊通| 富川| 九寨沟县| 县级市| 清镇市| 清流县| 和静县| 常德市| 平陆县| 金沙县| 扬州市| 平昌县| 榆树市| 普宁市| 顺义区| 阿图什市| 沛县| 永福县| 原平市| 厦门市| 临泽县| 辽阳县| 瑞金市| 昌吉市| 舒兰市| 大邑县| 涿州市| 通榆县| 浦县| 尼木县| 望奎县|