關於tcpjava的信息

本文目錄一覽:

java的TCP和HTTP有什麼區別?

TCP是傳輸層協議,定義數據傳輸和連接方式的規範。握手過程中傳送的包里不包含數據,三次握手完畢後,客戶端與服務器才正式開始傳送數據。

HTTP 超文本傳送協議(Hypertext Transfer Protocol )是應用層協議,定義的是傳輸數據的內容的規範。

HTTP協議中的數據是利用TCP協議傳輸的,特點是客戶端發送的每次請求都需要服務器回送響應,它是TCP協議族中的一種,默認使用 TCP 80端口。

好比網絡是路,TCP是跑在路上的車,HTTP是車上的人。每個網站內容不一樣,就像車上的每個人有不同的故事一樣。

在Java中實現TCP協議編程中怎麼傳

在Java中實現TCP協議編程

ServerSocket:編寫TCP網絡服務程序,首先要用到java.net.ServerSocket類用以創建服務器Socket

構造方法:

ServerSocket(int port):創建綁定到特定端口的服務器套接字

ServerSocket(int port, int backlog):利用指定的backlog(服務器忙時保持連接請求的等待客戶數量),創建服務器套接字並將其綁定到指定的本地端口號。

ServerSocket(int port, int backlog, InetAddress bindAddr):使用指定的端口、偵聽 backlog 和要綁定到的本地 IP 地址創建服務器。

Socket:客戶端要與服務器建立連接,必須先創建一個Socket對象

常用構造方法

Socket(String host, int port):創建一個流套接字並將其連接到指定主機上的指定端口號。

Socket(InetAddress address, int port):創建一個流套接字並將其連接到指定 IP 地址的指定端口號。

服務器端程序調用ServerSocket類中的accept()方法等待客戶端的連接請求,一旦accept()接收了客戶端連接請求,該方法返回一個與該客戶端建立了專線連接的Socket對象,不用程序去創建這個Socket對象。建立了連接的兩個Socket是以IO流的方式進行數據交換的,Java提供了Socket類中的getInputStream()返回Socket的輸入流對象,getOutputStream()返回Socket的輸出流對象。

TCP服務器與TCP客戶端間的數據的接受圖示:

創建一個TCP服務器端程序的步驟

(1)創建一個ServerSocket

(2)從ServerSocket接受客戶連接請求

(3)創建一個服務線程處理新的連接

(4)在服務線程中,從socket中獲得I/O流

(5)對I/O流進行讀寫操作,完成與客戶的交互

(6)關閉I/O流

(7)關閉Socket

ServerSocket server=new ServerSocket(port)

Socket s =server.accept();

ObjectInputStream in=new ObjectInputStream(s.getInputStream());

ObjectOutputStream out=new ObjectOutputStream(s.getOutputStream());

out.close();

in.close();

s.close();

創建一個TCP客戶端程序的步驟

(1)創建Socket

(2)獲得I/O流

(3)對I/O流進行讀寫操作

(4)關閉I/O流

(5)關閉Socket

Socket connection =new Socket(127.0.0.1,9009);

ObjectInputStream input=new ObjectInputStream(connection.getInputStream());

ObjectOutputStream output=new ObjectOutputStream(connection.getOutputStream());

output.close();

input.close();

connection.close();

用TCP實現服務器與客戶端的「聊天」:

實例代碼:

客戶端:

package com.hbsi.net;

import java.net.Socket;

import java.io.*;

public class TcpClient{

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

// 1.建立tcp客戶端socket,要確定要連接的服務器ip,port

Socket s = new Socket(“192.168.49.87”, 9009);

// 獲取鍵盤錄入

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

// 2.通過建立的socket,獲取輸出流對象

// 數據輸出給服務器端

OutputStream out = s.getOutputStream();

BufferedWriter bwout = new BufferedWriter(new OutputStreamWriter(out));

// 獲取服務器端返回的數據

// 讀取服務器端發過來的信息InputStreamReader()

BufferedReader brin = new BufferedReader(new InputStreamReader(

s.getInputStream()));

String line = null;

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

if (line.equals(“over”))

break;

bwout.write(line);

bwout.newLine();

bwout.flush();

String str = brin.readLine();

System.out.println(“server:” + str);

}

br.close();

s.close();

}

}

服務器端:

package com.hbsi.net;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class TcpServer{

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

// 1.建立服務器socket

ServerSocket ss = new ServerSocket(9009);

// 2.調用accept()

Socket s = ss.accept();

System.out.println(s.getInetAddress().getHostAddress()

+ “…connection”);

// 讀取客戶的信息的輸入流

InputStream in = s.getInputStream();

BufferedReader brin = new BufferedReader(new InputStreamReader(in));

// 向客戶端發送信息輸出流,服務端向客戶端返回信息OutputStreamWriter()

BufferedWriter brout = new BufferedWriter(new OutputStreamWriter(

s.getOutputStream())); String line = null;

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

System.out.println(“client:” + line);

brout.write(line.toUpperCase());//服務器端收到信息後,將信息轉為大寫返回給客戶端toUpperCase()

brout.newLine();

brout.flush();

}

s.close();

ss.close();

}

}

java 不用socket怎麼實現tcp

服務端監聽:ServerSocket server=new ServerSocket(port);//port:綁定的端口號

Socket client=server.accept();//監聽端口,一旦取得連接則獲得客戶端的socket連接對象client

客戶端: Socket s=new Socket(ip,port);//要連接的服務器的ip以及端口號

如果正常連接上之後,socket的對象可以獲得InputStream和OutputStreame,然後就可以進行通信了

完成通信之後,執行socket對象的close()方法關閉連接,完成一次完整的socket連接

用java建立網絡連接TCP

服務器端:

package net;

import java.net.*;

import java.io.*;

public class TCPServer {

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

ServerSocket ss = new ServerSocket(6666);

int count = 0;

while (true){

Socket s = ss.accept();

count ++;

DataInputStream dis = new DataInputStream(s.getInputStream());

System.out.println(“第” + count + “個客戶:” + dis.readUTF() + s.getInetAddress() + “port” + s.getPort());

dis.close();

s.close();

}

}

}

客戶端:

package net;

import java.net.*;

import java.io.*;

public class TCPClient {

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

Socket s = new Socket(“127.0.0.1”,6666);

OutputStream os = s.getOutputStream();

DataOutputStream dos = new DataOutputStream(os);

dos.writeUTF(“HELLO SERVER !”);

System.out.println(“I am a client !”);

dos.flush();

dos.close();

s.close();

}

}

java不支持tcp/ip協議嗎

支持。java因其具備這項功能,也是支持tcp/ip協議的,Java是一門面向對象的編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因Java語言具有功能強大和簡單易用兩個特徵。

java如何通過tcp發送指令

以下是一個展示java使用tcp通訊的簡單例子,包括服務器和客戶端代碼:

/**

*TCPServer

*/

import java.io.*;

import java.net.*;

class TCPServer{

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

ServerSocket listen = new ServerSocket(5050);

Socket server = listen.accept();

InputStream in = server.getInputStream();

OutputStream out = server.getOutputStream();

char c = (char)in.read();

System.out.println(“收到:” + c);

out.write(‘s’);

out.close();

in.close();

server.close();

listen.close();

}

}

/**

*TCPClient

*/

import java.io.*;

import java.net.*;

class TCPClient{

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

Socket client = new Socket(“127.0.0.1” , 5050);

InputStream in = client.getInputStream();

OutputStream out = client.getOutputStream();

out.write(‘c’);

char c = (char)in.read();

System.out.println(“收到:” + c);

out.close();

in.close();

client.close();

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/242050.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:46
下一篇 2024-12-12 12:46

相關推薦

  • Java 監控接口返回信息報錯信息怎麼處理

    本文將從多個方面對 Java 監控接口返回信息報錯信息的處理方法進行詳細的闡述,其中包括如何捕獲異常、如何使用日誌輸出錯誤信息、以及如何通過異常處理機制解決報錯問題等等。以下是詳細…

    編程 2025-04-29
  • 使用Python爬蟲獲取電影信息的實現方法

    本文將介紹如何使用Python編寫爬蟲程序,來獲取和處理電影數據。需要了解基本的Python編程語言知識,並使用BeautifulSoup庫和Requests庫進行爬取。 一、準備…

    編程 2025-04-28
  • Python爬取網頁信息

    本文將從多個方面對Python爬取網頁信息做詳細的闡述。 一、爬蟲介紹 爬蟲是一種自動化程序,可以模擬人對網頁進行訪問獲取信息的行為。通過編寫代碼,我們可以指定要獲取的信息,將其從…

    編程 2025-04-28
  • 如何使用Python執行Shell命令並獲取執行過程信息

    本文將介紹如何使用Python執行Shell命令並獲取執行過程信息。我們將從以下幾個方面進行闡述: 一、執行Shell命令 Python內置的subprocess模塊可以方便地執行…

    編程 2025-04-28
  • Python實現身份信息模擬生成與查驗

    本文將從以下幾個方面對Python實現身份信息模擬生成與查驗進行詳細闡述: 一、身份信息生成 身份信息生成是指通過代碼生成符合身份信息規範的虛假數據。Python中,我們可以使用f…

    編程 2025-04-27
  • Dapper使用getschema獲取表信息

    本文旨在介紹Dapper中使用getschema獲取表信息的方法和注意事項。 一、獲取某張表的所有列信息 使用Dapper獲取某張表信息,可以使用 `IDbConnection.G…

    編程 2025-04-27
  • 已裝備我軍的空中信息化作戰平台

    本文將會從多個方面詳細闡述已裝備我軍的空中信息化作戰平台。 一、平台概述 已裝備我軍的空中信息化作戰平台是一個全新的作戰系統,具備實時數據採集、處理、分析、共享的能力。它可以在不同…

    編程 2025-04-27
  • 通過提交信息搜索-使用git

    本篇文章重點講解如何使用git通過提交信息來搜索。我們將從多個方面介紹如何使用git來搜索提交信息,並提供相應的代碼示例以供參考。 一、搜索方式 Git提供了三種搜索方式,分別為:…

    編程 2025-04-27
  • Linux查看系統信息

    一、CPU信息 Linux系統下,查看CPU的信息最常用的命令是lscpu。該命令可以顯示CPU架構、核心數量、線程數、緩存大小、CPU頻率等信息。例如: lscpu 該命令會輸出…

    編程 2025-04-24
  • 軟考 信息安全工程師

    軟考 信息安全工程師是一項技能型國家級資格認證考試,主要測試考生在信息安全領域的理論知識和實踐技能,是證明個人信息安全能力的重要證書。本文將從多個方面對軟考 信息安全工程師做詳細的…

    編程 2025-04-23

發表回復

登錄後才能評論