javasocket編程是tcp
『壹』 java開發聊天功能用什麼技術比較好
開發聊天功能可以採用以下幾種技術:
Socket編程:使用Java Socket編程可以實現基於TCP或UDP的網路通信,這虧畢是Java最基礎、最底層的網路編程技術。使用Socket編程可以實現實時通信、消息推送等功能,但需要自己實現消息協議、數據傳輸等細節。
Java NIO:Java NIO(New IO)是Java 1.4之後引入的一種新IO API,它提供了基於事件驅動的非同步IO操作,可以大大提高網路通信效率。使用Java NIO可以實現高並發、高性能的網路通信,但需要掌握NIO的相關概念和使用方式。
WebSockets:WebSockets是HTML5標准中新增的一種協議,可以實現基於瀏覽器的實時雙向通信。使用Java開發WebSockets可以實現跨平台、跨瀏覽器的聊天功能,但需要掌握WebSocket協議的相關概念和使用方式。
第三方庫:Java中有許多第三方庫可以用於實現聊天功能,如Netty、Apache MINA、Smack等。這些庫提供了更加簡銷悉芹單、易用的API,可以快速陸升搭建聊天功能,但需要熟悉相關庫的使用方法和特性。
具體選用哪種技術,需要根據具體需求、開發經驗和技術水平等因素進行綜合考慮。
『貳』 在Java中實現TCP協議編程中怎麼傳
在Java中實現TCP協議編程
ServerSocket:編寫TCP網路服務程序,首先要用到java.net.ServerSocket類用以創建伺服器Socket
構造方法:
ServerSocket(intport):創建綁定到特定埠的伺服器套接字
ServerSocket(intport,intbacklog):利用指定的backlog(伺服器忙時保持連接請求的等待客戶數量),創建伺服器套接字並將其綁定到指定的本地埠號。
ServerSocket(intport,intbacklog,InetAddressbindAddr):使用指定的埠、偵聽backlog和要綁定到的本地IP地址創建伺服器。
Socket:客戶端要與伺服器建立連接,必須先創建一個Socket對象
常用構造方法
Socket(Stringhost,intport):創建一個流套接字並將其連接到指定主機上的指定埠號。
Socket(InetAddressaddress,intport):創建一個流套接字並將其連接到指定IP地址的指定埠號。
伺服器端程序調用ServerSocket類中的accept()方法等待客戶端的連接請求,一旦accept()接收了客戶端連接請求,該方法返回一個與該客戶端建立了專線連接的Socket對象,不用程序去創建這個Socket對象。建立了連接的兩個Socket是以IO流的方式進行數據交換的,Java提供了Socket類中的getInputStream()返回Socket的輸入流對象,getOutputStream()返回Socket的輸出流對象。
TCP伺服器與TCP客戶端間的數據的接受圖示:
用TCP實現伺服器與客戶端的「聊天」:
實例代碼:
客戶端:
packagecom.hbsi.net;
importjava.net.Socket;
importjava.io.*;
publicclassTcpClient{
publicstaticvoidmain(String[]args)throwsException{
//1.建立tcp客戶端socket,要確定要連接的伺服器ip,port
Sockets=newSocket("192.168.49.87",9009);
//獲取鍵盤錄入
BufferedReaderbr=newBufferedReader(newInputStreamReader(System.in));
//2.通過建立的socket,獲取輸出流對象
//數據輸出給伺服器端
OutputStreamout=s.getOutputStream();
BufferedWriterbwout=newBufferedWriter(newOutputStreamWriter(out));
//獲取伺服器端返回的數據
//讀取伺服器端發過來的信息InputStreamReader()
BufferedReaderbrin=newBufferedReader(newInputStreamReader(
s.getInputStream()));
Stringline=null;
while((line=br.readLine())!=null){
if(line.equals("over"))
break;
bwout.write(line);
bwout.newLine();
bwout.flush();
Stringstr=brin.readLine();
System.out.println("server:"+str);
}
br.close();
s.close();
}
}
伺服器端:
packagecom.hbsi.net;
importjava.io.BufferedReader;
importjava.io.BufferedWriter;
importjava.io.InputStream;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.net.ServerSocket;
importjava.net.Socket;
publicclassTcpServer{
publicstaticvoidmain(String[]args)throwsException{
//1.建立伺服器socket
ServerSocketss=newServerSocket(9009);
//2.調用accept()
Sockets=ss.accept();
System.out.println(s.getInetAddress().getHostAddress()
+"...connection");
//讀取客戶的信息的輸入流
InputStreamin=s.getInputStream();
BufferedReaderbrin=newBufferedReader(newInputStreamReader(in));
//向客戶端發送信息輸出流,服務端向客戶端返回信息OutputStreamWriter()
BufferedWriterbrout=newBufferedWriter(newOutputStreamWriter(
s.getOutputStream())); Stringline=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 Socket 底層是怎樣基於TCP/IP 實現的
首先必須明確:TCP/IP模型中有四層結構:
應用層(Application Layer)、傳輸層(Transport Layer)、網路層(Internet Layer )、鏈路層(LinkLayer)
其中Ip協議(Internet Protocol)是位於網路層的,TCP協議時位於傳輸層的。通過Ip協議可以使可以使兩台計算機使用同一種語言,從而允許Internet上連接不同類型的計算機和不同操作系統的網路。Ip協議只保證計算機能夠接收和發送分組數據。 當計算機要和遠程的計算機建立連接時,TCP協議會讓他們建立連接:用於發送和接收數據的虛擬電路。
在JAVA中,我們用 ServerSocket、Socket類創建一個套接字連接,從套接字得到的結果是一個InputStream以及OutputStream對象,以便將連接作為一個IO流對象對待。通過IO流可以從流中讀取數據或者寫數據到流中,讀寫IO流會有異常IOException產生。
套接字或插座(socket)是一種軟體形 式的抽象,用於表達兩台機器間一個連接的「終端」。針對一個特定的連接,每台機器上都有一個「套接字」,可以想像它們之間有一條虛擬的「線纜」。JAVA 有兩個基於數據流的套接字類:ServerSocket,伺服器用它「偵聽」進入的連接;Socket,客戶端用它初始一次連接。偵聽套接字只能接收新的 連接請求,不能接收實際的數據包,即ServerSocket不能接收實際的數據包。
套接字是基於TCP/IP實現的,它是用來提供一個訪問TCP的服務介面,或者說套接字socket是TCP的應用編程介面API,通過它應用層就可以訪問TCP提供的服務。
在JAVA中,我們用 ServerSocket、Socket類創建一個套接字連接,從套接字得到的結果是一個InputStream以及OutputStream對象,以便 將連接作為一個IO流對象對待。通過IO流可以從流中讀取數據或者寫數據到流中,讀寫IO流會有異常IOException產生。
『伍』 java開發聊天功能用什麼技術實現的
1. Socket編程:使用漏譽Socket可以在客戶端和伺服器之間建立TCP連接,實現雙方之間的實時通信。Java提供了Socket類和ServerSocket類,可用於實現Socket編程。
2. WebSocket:WebSocket是一種基於TCP協議的新型網路通信協議,它可以在瀏覽器和伺服器之間建立持久連接,實現雙向實時通信。Java可以使用一些WebSocket框架,如Netty、Tomcat等,來實現WebSocket功能。
3. HTTP長連接:HTTP長連接是通過保持襪搜喚TCP連接來實現通信的一種方式,可以在客戶端和伺服器之間建立持久連接,實現雙向實時通信。Java可以使用一些HTTP長連接告凱框架,如Netty、Apache HttpClient等,來實現HTTP長連接功能。
4. 消息隊列:消息隊列可以實現非同步通信,通過在消息隊列中存儲消息,來實現客戶端和伺服器之間的實時通信。Java可以使用一些消息隊列框架,如ActiveMQ、RabbitMQ等,來實現消息隊列功能。
需要根據具體需求選擇合適的技術來實現聊天功能。