本文目錄一覽:
- 1、java的TCP和HTTP有什麼區別?
- 2、在Java中實現TCP協議編程中怎麼傳
- 3、java 不用socket怎麼實現tcp
- 4、用java建立網絡連接TCP
- 5、java不支持tcp/ip協議嗎
- 6、java如何通過tcp發送指令
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-hant/n/242050.html