1. 程式人生 > >Java Socket 實現UDP實時聊天小案例

Java Socket 實現UDP實時聊天小案例

最近在看Socke相關的東西,因為平時工作中用到這塊的東西比較少,記錄一下,以後可以回顧一下。

UDP協議只管傳送資料,不論服務端是否正常執行,都會發送,其特點是:效率高、不安全、容易丟包。

廢話不多說,直接上程式碼

客戶端:

package com.tz.socket.client;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/**
 * <p> Title: AskClient </p>
 * <p> Description: 資料傳送方</p>
 * <p> Company: </p>
 * @author UU
 * @date 2017年6月28日下午9:29:36
 */
public class AskClient {
	
	private static final int SERVER_PORT = 8888;
	private static final int CLIENT_PORT = 6666;

	public static void main(String[] args) throws Exception {
		
		//建立套接字物件(自己的埠)
		DatagramSocket socket = new DatagramSocket(SERVER_PORT);
//		String msg = "在嗎?";
		//獲取控制檯輸入資訊
		Scanner scanner = new Scanner(System.in);
		
		while (true) {
			String msg = scanner.nextLine();
			DatagramPacket packet = new DatagramPacket(msg.getBytes(), msg.getBytes().length,
					InetAddress.getLocalHost(), CLIENT_PORT);
			//傳送
			socket.send(packet);
			
			if ("88".equals(msg)) {
				break;
			}
			
			//接受服務端傳送的資訊
			byte[] b = new byte[1024];
			DatagramPacket packet2 = new DatagramPacket(b, b.length, InetAddress.getLocalHost(), CLIENT_PORT);
			socket.receive(packet2);
			System.out.println("小明:"+new String(b,0,packet2.getLength()));
		}
		
		socket.close();
	}
}

 服務端:
package com.tz.socket.server;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

/**
 * 接受方
 * <p> Title: AskServer </p>
 * <p> Description: </p>
 * <p> Company: </p>
 * @author UU
 * @email 
[email protected]
* @phone 18317183091 * @date 2017年6月28日下午10:24:42 */ public class AskServer { private static final int SERVER_PORT = 6666; private static final int CLIENT_PORT = 8888; public static void main(String[] args) throws Exception { //建立套接字物件(自己的埠) DatagramSocket server = new DatagramSocket(SERVER_PORT); Scanner scanner = new Scanner(System.in); while(true){ //接受資料包,並讀進陣列b中 byte[] b = new byte[1024]; DatagramPacket packet = new DatagramPacket(b, b.length,InetAddress.getLocalHost(),CLIENT_PORT); server.receive(packet); System.out.println("小紅:"+new String(b,0,packet.getLength())); // String callBack = "在的!"; String callBack = scanner.nextLine(); DatagramPacket packet2 = new DatagramPacket(callBack.getBytes(), callBack.getBytes().length, InetAddress.getLocalHost(),CLIENT_PORT); server.send(packet2); if ("88".equals(callBack)) { break; } } server.close(); } }

其實並沒有所謂的客戶端和服務端,每個類既是客戶端,也是服務端,但在實際開發中,應該是客戶端傳送到伺服器端,然後伺服器端轉發訊息到其他客戶端的過程。

相關推薦

Java Socket 實現UDP實時聊天案例

最近在看Socke相關的東西,因為平時工作中用到這塊的東西比較少,記錄一下,以後可以回顧一下。 UDP協議只管傳送資料,不論服務端是否正常執行,都會發送,其特點是:效率高、不安全、容易丟包。 廢話不多說,直接上程式碼 客戶端: package com.tz.socket.c

java Socket實現簡單線上聊天(二)

接《Java Socket實現簡單線上聊天(一)》,在單客戶端連線的基礎上,這裡第二步需要實現多客戶端的連線,也就需要使用到執行緒。每當有一個新的客戶端連線上來,服務端便需要新啟動一個執行緒進行處理,從而解決之前的迴圈讀取中造成阻塞的問題。 寫執行緒通常有兩種方法,整合T

java Socket實現簡單在線聊天(一)

結合線程 java.awt exc iss order 新建 exception connect border 出處:http://blog.csdn.net/tuzongxun 最近的項目有一個在線網頁交流的需求,由於很久以前做過的demo已經忘記的差不多了,因此便重新學

socket實現人多聊天Java代碼加載過程

exc add 數據 開啟 客戶 字節 src 阿裏 構造方法 第一部分是java代碼加載過程 關於java代碼加載過程,今天調試了阿裏巴巴一份代碼,如下: /** * 加載方法不等於執行方法,初始化變量則會賦值 * 類加載順序應為 加載靜態方

Java通過Socket實現UDP程式設計及Socket總結

UDPServer.java import java.io.IOException; import java.net.DatagramPacket; import java.net.Datagram

flume+kafka+storm整合實現實時計算案例

    我們做資料分析的時候常常會遇到這樣兩個場景,一個是統計歷史資料,這個就是要分析歷史儲存的日誌。我們會使用hadoop,具體框架可以設計為:1.flume收集日誌;2.HDFS輸入路徑儲存日誌;3.MapReduce計算,將結果輸出到HDFS輸出路徑;4.hive+sq

Servlet 實現訪問量的統計案例

nbsp get content ati str 學習 resp row AC 今天學習了Servlet的基礎知識,學習了一個統計訪問量的小案例,記錄一下

Android藍芽socket實現視訊實時傳輸,以及圖片和文字傳輸

目標 兩臺手機裝置之間能夠正常進行藍芽配對(藍芽模組兒和硬體掛鉤,所以需要兩臺真機) socket實現藍芽文字傳輸 實現圖片傳輸 實現實時視訊傳輸 程式碼下載:https://download.csdn.net/download/m0_37781149/10434336

Java Socket 實現HTTP與HTTPS協議傳送POST/GET請求

JAVA Socket 實現HTTP與HTTPS客戶端傳送POST與GET方式請求         哇,一看標題怎麼這麼長啊,其實意思很簡單,哥討厭用HTTP Client做POST與GET提交覺得那個畢竟是別人寫得AP

Java Socket實現客戶端服務端相互發送文字

Socket是網路程式設計的介面,它抽象成執行緒之間的介面。兩個執行緒,不管它的作業系統,不管它的硬體,只要有Socket介面,在同一主機中或者在不同的主機中都能通訊。我們見到的大大小小的網路程式大多都是通過Socket實現的,比如遊戲伺服器,ftp伺服器,瀏覽器等。所以理解Socket程式設計,是

Java——socket實現tcp連線

Server: import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { /** * Socket服務端 */

Linux中用socket實現UDP網路程式

這篇部落格的目的是想實現一個簡單的UDP伺服器程式,完成客戶端與伺服器端的通訊。 因為涉及的小知識點比較多,所以本篇部落格的篇幅較長,但是會講的很詳細。 在下一篇部落格裡,我會總結Linux中用socket實現TCP網路程式 1.程式的第一步是建立套接字(so

laravel框架呼叫介面實現頁面渲染【案例

首先我們先看文件  找到對應的文件 再找到對應的頁面  我要渲染的頁面如下圖   先看看分別都是什麼  比如說  輪播圖  導航  圖片資訊等等... 獲取到了頁面我們寫好路由就開始寫控制器  控制器如下 json_encode跟json_decode這兩個函式  

JSP-Servlet實現網上BBS專案案例

專案功能:實現一般bbs論壇專案的功能,發表說說 其他好友可以評論 一、資料庫的建立: sql語句如下: create table `bbs`.`user`( `us

Java讀寫Properties配置檔案案例

在軟體專案開發中需要讀取配置檔案,下面就簡單的演示一下如何從配置檔案中讀取資料以及修改其中的資料   一,建立一個新的Java專案,並命名為 propertiesdemo               &n

Java Socket實現客戶端與服務端通訊例項

首先,建立一個Server.java的伺服器端類package socket; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; impor

Java Socket實現多個客戶端連線同一個服務端

使用Socket實現多個客戶端和同一客戶端通訊;首先客戶端連線服務端傳送一條訊息,服務端接收到訊息後進行處理,完成後再回復客戶端一條訊息。本人通過自己的思維編寫了一份服務端和客戶端實現的程式碼,望能與大家相互學習,共同進步。   服務端程式碼 /** * Socket服務

java socket 實現c/s檔案上傳下載功能+註冊登入

使用JAVA SOCKET實現c/s結構的通訊程式,以實現客戶端向伺服器端的檔案的上傳以及伺服器端向客戶端的檔案的下載。 實現思路: 1、在伺服器端,建立SocketServer物件,監聽某一埠,有連線請求則開一個執行緒處理這一請求 2、在客戶端,根據伺服器的ip地址以及埠號,建立

java WebSocket實現簡單的聊天室(包括群發和點對點聊天

今天突然看到了WebSocket然後就網上找了一個例子,然後修改了下,實現了簡單的聊天室,包括群聊和點對點聊天。 使用的程式碼如下 jsp程式碼: <%@ page language="java" import="java.util.*" pageEncoding="

[Java] Socket/ServerSocket/Thread 控制檯聊天程式--兩人任意聊

//伺服器端程式碼 import java.io.*; import java.net.*; public class ServerTest3{ public static void main(Str