97色伦色在线综合视频,无玛专区,18videosex性欧美黑色,日韩黄色电影免费在线观看,国产精品伦理一区二区三区,在线视频欧美日韩,亚洲欧美在线中文字幕不卡

搭建網(wǎng)站用什么框架抖音個人主頁模板

鶴壁市浩天電氣有限公司 2026/01/24 17:33:27
搭建網(wǎng)站用什么框架,抖音個人主頁模板,網(wǎng)頁設計圖片怎么換,js 網(wǎng)站測速網(wǎng)絡編程TCPTCP的核心特點#xff1a;面向字節(jié)流#xff08;UDP是數(shù)據(jù)報#xff09;#xff0c;所有的讀寫的基本單位都是byteServerSocket#xff1a;專門給服務器使用的#xff0c;負責連接#xff0c;不對數(shù)據(jù)進行操作Socket#xff1a;服務器和客戶端都可以使用當服…網(wǎng)絡編程TCPTCP的核心特點面向字節(jié)流UDP是數(shù)據(jù)報所有的讀寫的基本單位都是byteServerSocket專門給服務器使用的負責連接不對數(shù)據(jù)進行操作Socket服務器和客戶端都可以使用當服務器啟動的時候綁定端口號因為TCP是有連接的所以要使用accept去確保連接的開始Socket要傳入服務器的ip和端口號因為TCP面向的是字節(jié)流所以他沒有向UDP數(shù)據(jù)報的那種sent和review方法有的是字節(jié)流的讀取和之前文件IO很像TCPEchoServer思路實現(xiàn)TCPEchoServer首先我們需要知道所有的代碼都是無法直接操作網(wǎng)卡的一開始我創(chuàng)建了一個serversocket類型的空變量然后在構造方法中傳入端口號這個就相當于我使用serversocket類這個代理人去幫我向操作系統(tǒng)申請一個小窗口和網(wǎng)卡進行溝通連接之后因為serversocket只是連接無法操作數(shù)據(jù)所以就要使用socket來操作然后在start方法中首先我使用printf格式打印出來日志然后因為TCP面向的是字節(jié)流所以我不能向UDP那樣使用數(shù)據(jù)報datagrampacket去進行操作而是要使用inputstream和outputstream進行操作這兩個本來是需要使用read和write進行操作的但是為了方便的情況下我就使用scanner和printwrite進行套殼然后因為我們這個是服務器所以要在processconnecition方法中寫內(nèi)層一個死循環(huán)反復進行讀取然后當有輸入的時候使用一個string類型的去接收接收到之后就要進行處理因為現(xiàn)在是回顯式所以先不管然后處理完響應只需要發(fā)回去就行這個時候也有一個注意的地方就是緩沖區(qū)在java中因為每次直接對網(wǎng)絡或者文件進行修改太慢了所有就會存在一個緩沖區(qū)把你寫的全部先存在一個地方所以他并沒有馬上就傳輸出去必須要等你使用flush把他沖走他才會真的發(fā)送具體實現(xiàn)第一步這一步首先就是創(chuàng)建一個空的serversocket類型的變量然后在構造方法中初始化的時候傳入使用的端口號說人話就是你沒辦法直接操作網(wǎng)卡所以要找serversocket這個代理人幫你和操作系統(tǒng)申請一個窗口讓你能夠和網(wǎng)卡進行溝通第二步這一步首先就是打印日志服務器啟動然后因為TCP是有連接的所以我們需要先處理外層的連接然后再去處理連接之后的事情使用socket這個來處理文件的讀取注意這個時候因為可能不只一個連接所以我們需要加入一個死循環(huán)確??梢灾С侄鄠€客戶端使用第三步核心這一步就是整個服務器最核心的地方了首先當確立了連接之后我們會記錄日志把對方的IP和端口號全部獲取到因為TCP協(xié)議是字節(jié)流的所以這個時候就需要使用inputstream和outputstream這兩個操作字節(jié)流這里可以使用另外一種寫法每次讀取一個數(shù)組的長度讀到-1就停止那種但是就很麻煩所以我們直接使用scanner和printwrite這兩個更方便只需要對inputstream和outputstream進行套個殼就行套完殼之后就可以直接使用了。之后就很簡單了只要連接沒斷開就會一直等后續(xù)的邏輯就是先讀取請求然后計算并返回響應注意要刷新緩沖區(qū)不然就會出現(xiàn)發(fā)不出去的情況最后打印一下日志就結束。源碼package NetWork; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; /** * Created with IntelliJ IDEA. * Description: * User: zhany * Date: 2025-12-15 * Time: 15:07 */ /*tcp協(xié)議的特點有連接面向字節(jié)流全雙工可靠傳輸*/ public class TcpServerDemo { //首先創(chuàng)建一個serversocket的空變量,Serversocket就是專門用來連接的 ServerSocket serverSocket null; //初始化的同時指定端口號 public TcpServerDemo(int serverPort) throws IOException { serverSocket new ServerSocket(serverPort); } //start方法 public void start() throws IOException { //首先這個是服務器所以需要24小時工作 System.out.println(服務器啟動); while(true){ //前面的serversocket任務已經(jīng)結束只負責連接不負責數(shù)據(jù)的修改下面登場的是socket Socket clientSocket serverSocket.accept(); //連接完就要負責處理數(shù)據(jù)了 Thread thread new Thread(()-{ processconection(clientSocket); }); thread.start(); } } private void processconection(Socket clientSocket) { //先打印日志 System.out.printf([%s,%d],客戶端上線 ,clientSocket.getInetAddress(),clientSocket.getPort()); try(InputStream inputStream clientSocket.getInputStream(); OutputStream outputStream clientSocket.getOutputStream()) { while (true){ //字節(jié)流需要使用input和output //1.獲取并解析連接 Scanner scanner new Scanner(inputStream); PrintWriter writer new PrintWriter(outputStream); if (!scanner.hasNext()){ System.out.printf([%s,%d],客戶端下線 ,clientSocket.getInetAddress(),clientSocket.getPort()); break; } String request scanner.next(); //計算并返回 String response process(request); writer.println(response); //刷新緩沖區(qū) writer.flush(); } } catch (IOException e) { e.printStackTrace(); } finally { try { clientSocket.close(); } catch (IOException e) { e.printStackTrace(); } } } private String process(String request) { return request; } public static void main(String[] args) throws IOException { TcpServerDemo tcpServerDemo new TcpServerDemo(9090); tcpServerDemo.start(); } }TcpEchoClient思路客戶端的思路就比較簡單首先在構造方法中需要初始化一下要去訪問的服務器和端口號然后在start方法中也是比較簡單的因為tcp是字節(jié)流的所以需要直接使用inputstream和outputstream直接使用套殼的scanner和printwrite會簡單一些不使用就要使用文件io的辦法然后在控制臺讀取用戶的輸入然后發(fā)送給服務器然后接受服務器的請求就可以了注意這個也是要釋放緩沖區(qū)的。具體實現(xiàn)第一步Tcp中是提供構造方法讓你可以直接輸入網(wǎng)址的類似于127.0.0.1在udp中要調(diào)用方法getname才行這里初始化了要訪問的ip和端口號第二步核心的start方法這里就很簡單了因為TCP是字節(jié)流所以他進行的操作也是需要使用inputstream和outputstream來進行操作的使用scanner和printwrite進行套殼就不需要使用基礎的文件io那種復雜的寫法然后只需要在控制臺讀取用戶的輸入然后發(fā)送接收返回值就行了源碼package NetWork; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; public class TcpClientDemo { private Socket socket; private static final String EXIT_CMD exit; public TcpClientDemo(String serverIP, int serverPort) throws IOException { socket new Socket(serverIP, serverPort); } public void start() { System.out.println(客戶端啟動); System.out.println(輸入內(nèi)容發(fā)送到服務器(輸入exit退出)); try (InputStream inputStream socket.getInputStream(); OutputStream outputStream socket.getOutputStream(); Scanner scanner new Scanner(System.in); Scanner scannerNet new Scanner(inputStream); PrintWriter writer new PrintWriter(outputStream)) { while (true) { String request scanner.nextLine(); if (EXIT_CMD.equalsIgnoreCase(request)) { break; } writer.println(request); writer.flush(); if (scannerNet.hasNextLine()) { String response scannerNet.nextLine(); System.out.println(服務器響應: response); } } } catch (IOException e) { System.err.println(通信異常: e.getMessage()); } finally { try { if (socket ! null !socket.isClosed()) { socket.close(); } } catch (IOException e) { System.err.println(關閉socket異常: e.getMessage()); } } } public static void main(String[] args) { try { TcpClientDemo tcpClientDemo new TcpClientDemo(127.0.0.1, 9090); tcpClientDemo.start(); } catch (IOException e) { System.err.println(連接服務器失敗: e.getMessage()); } } }上述的代碼中存在一個問題就是多個客戶端去訪問的時候會被卡住阻塞在因為當代碼執(zhí)行到確立連接之后他就會往下走跳到processconnection里面去這個時候后面的線程想要連接就必須等待前面的結束完才可以用如何解決這個問題多線程這個時候就誕生了只需要在在服務器里面加一個線程這樣就能實現(xiàn)讓多線程去實現(xiàn)直接開啟分身模式小心超人上線但是每次都創(chuàng)建一個線程和銷毀一個線程開銷的很大的有沒有更好的方法有線程池方法在一開始就創(chuàng)建好n個線程每當一個客戶端來了就使用一下線程這樣就能最大限度使用服務器
版權聲明: 本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請聯(lián)系我們進行投訴反饋,一經(jīng)查實,立即刪除!

網(wǎng)站設計策劃書做外貿(mào)收費的服裝網(wǎng)站

網(wǎng)站設計策劃書,做外貿(mào)收費的服裝網(wǎng)站,網(wǎng)站開發(fā)學費,建筑公司網(wǎng)站首頁圖片工業(yè)信號的“數(shù)字煉金術”#xff1a;從噪聲到智能決策的全過程拆解你有沒有想過#xff0c;一臺不起眼的工業(yè)振動傳感器#xff0

2026/01/23 07:46:01

達建網(wǎng)站網(wǎng)站開發(fā)商城圖片上傳

達建網(wǎng)站,網(wǎng)站開發(fā)商城圖片上傳,做銀行應該關注的網(wǎng)站,php網(wǎng)站開發(fā)實戰(zhàn)的書網(wǎng)站鏈接分析與生成全攻略 在當今數(shù)字化的時代,網(wǎng)站的鏈接建設對于提高網(wǎng)站的可見性和排名至關重要。本文將詳細介紹如何進行鏈接

2026/01/23 09:20:02

小企業(yè)網(wǎng)站免費建設建立網(wǎng)站的三種方式

小企業(yè)網(wǎng)站免費建設,建立網(wǎng)站的三種方式,個人網(wǎng)站 不用備案,電子商務網(wǎng)頁制作Qwen3-VL電商場景落地#xff1a;商品圖自動生成營銷文案與HTML頁面 在電商平臺每天上新數(shù)以萬計SKU的今天#xf

2026/01/23 03:15:02

哪個網(wǎng)站做布料好衡陽城鄉(xiāng)建設局網(wǎng)站

哪個網(wǎng)站做布料好,衡陽城鄉(xiāng)建設局網(wǎng)站,乙方寶招標官網(wǎng),分銷網(wǎng)絡設計案例網(wǎng)卡作為 ssh 連接的網(wǎng)卡。#xff08;2#xff09;修改網(wǎng)卡配置信息。找到虛擬機安裝目錄下的.vmx文件#xff0c;內(nèi)容

2026/01/23 07:13:01