1. 程式人生 > 實用技巧 >網路程式設計之 UDP 實現聊天

網路程式設計之 UDP 實現聊天

迴圈傳送

package chat;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;

/**
 * 傳送方
 */
public class UdpSenderDemo1 {

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

        DatagramSocket socket 
= new DatagramSocket(8888); //準備資料:控制檯讀取:System.in BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); while (true){ String data = reader.readLine(); byte[] dataBytes = data.getBytes(); DatagramPacket packet = new DatagramPacket(dataBytes, 0 , dataBytes.length, new
InetSocketAddress("localhost", 6666)); //傳送資料包 socket.send(packet); //當傳送一句 bye 的時候表示結束髮送 if (data.equals("bye")){ break; } } //關閉 socket.close(); } }

接收訊息

package chat;

import java.net.DatagramPacket;
import java.net.DatagramSocket; /** * 接收方 */ public class UdpReceiveDemo1 { public static void main(String[] args) throws Exception { DatagramSocket socket = new DatagramSocket(6666); while (true){ //準備接收資料包 byte[] container = new byte[1024]; DatagramPacket packet = new DatagramPacket(container, 0, container.length); //接收資料包 socket.receive(packet); //阻塞式接收包裹 //讀取資料 byte[] data = packet.getData(); String receiveData = new String(data, 0, data.length); //接收到的資料 System.out.println(receiveData); //當我們說一聲 bye 的時候就表示斷開連線 if (receiveData.equals("bye")){ break; } } //關閉 socket.close(); } }