用udp方式進行聊天的java實現. (轉)
我最近也在研究用實現oicq。
這是我的客戶端的簡單實現。
主要是透過udp方式,實現間的對話。
其中運用了序列化類的方法。
以下是,請多提意見。
//傳送訊息類
Message.java
import java.io.Serializable;
public class Message implements Serializable{
private String msg;
private String id;
private String destid;
public Message(String msg, String id, String destid) {
this.msg = msg;
this.id = id;
this.destid = destid;
}
//獲得訊息內容
public String getMessage() {
return msg;
}
//獲得傳送方的ip
public String getID() {
return id;
}
//獲得接受方的ip
public String getDestID() {
return destid;
}
}
//接受方
Receiver.java
import java.*;
import java.io.*;
public class Receiver extends Thread {
private Message msg;
private DatagramPacket packet;
private DatagramSocket socket;
private byte[] recvBuf = new byte[500];
public Receiver() {
try{
//建立udp包以接受資料。
packet = new DatagramPacke(recvBuf,recvBuf.length);
//建立接受方的udp埠以接收資料
socket = new DatagramSocket(7002);
}
catch(Exception e){}
}
public void run() {
try {
while(true){
//接受資料
socket.receive(packet);
ByteArrayInputStream byteStream = new
ByteArrayInputStream(recvBuf);
InputStream is = new ObjectInputStream(new
BufferedInputStream(byteStram));
Object o = is.readObject();
msg = (Message)o;
is.close();
System.out.println(msg.getMessage());
}
}
catch(Throwable t) {
t.printStackTrace();
}
}
}
//傳送方
Sender.java
import java.net.*;
import java.io.*;
public class Sender extends Thread {
private Message msg;
private DatagramSocket socket;
private DatagramPacket packet;
public Sender(Message msg) {
try {
this.msg = msg;
//獲得目的方的
String destID = msg.getDestID();
//獲得將要傳送的訊息內容
String destID = msg.getDestIDString message = msg.getMessage();
ByteArrayOutputStream byteStream = new ByteArrayOutputStream(500);
ObjectOutputStream = new ObjectOutputStream(new
BufferedOutputStream(byteStream));
os.writeObject(msg);
os.flush();
byte[] senuf = byteStream.toByteArray();
//建立udp資料包以傳送資料
packet = new DatagramPacket(sendBuf,sendBuf.length,
Address.getByName(destID),7002);
//建立傳送udp套接字,指定套接字口。
socket = new DatagramSocket(7000);
os.close();
}
catch(Throwable t) {
t.printStackTrace();
}
}
public void run() {
try {
//傳送訊息
socket.send(packet);
//傳送完畢關閉套接字。
socket.close();
}
catch(Throwable t) {
t.printStackTrace();
}
}
}
//測試
Udp_Chat.java
import java.io.*;
import java.net.*;
public class UDP_Chat {
public UDP_Chat(String s){
}
public static void main(String args[])throws Exception{
Message a = new Message("阿飛的卡","211.92.155.200" ,"211.92.155.200");
new Sender(a).start();
new Receiver().start();
}
}
參考文章:Java 技巧 40:透過資料包包輸送 利用資料包包在網上輸送 Java 物件
bootcool@263.net
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991337/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java用UDP實現簡單聊天JavaUDP
- 用UDP實現區域網內聊天程式UDP
- java Socket Udp聊天JavaUDP
- 【專案原始碼】- 【區域網聊天】android實現區域網聊天 - UDP實現原始碼AndroidUDP
- java實現UDP通訊JavaUDP
- 如何用Python實現多工版的udp聊天器PythonUDP
- java執行緒實現方式Java執行緒
- Java中實現執行緒的方式Java執行緒
- 實現 Java 平臺的三種方式(轉)Java
- Java多執行緒實現方式Java執行緒
- 實現埠對埠的聊天 (轉)
- oracle行轉列、列轉行、連續日期數字實現方式及mybatis下實現方式OracleMyBatis
- 聊聊UDP、TCP和實現一個簡單的JAVA UDP小DemoUDPTCPJava
- Java實現多執行緒的三種方式Java執行緒
- Java之實現多執行緒的方式二:實現Runnable介面Java執行緒
- 用連結串列的方式實現大數相減-Java實現Java
- 【Java】Java多執行緒實現的聊天客戶端和伺服器Java執行緒客戶端伺服器
- UDP聊天程式補充UDP
- 用java的jwindow實現程式執行出的splash畫面。 (轉)Java
- Java建立多執行緒的幾種方式實現Java執行緒
- Java實現多執行緒區域網聊天室Java執行緒
- 用Java程式碼實現一個簡單的聊天室功能Java
- Java中鎖的實現方式Java
- JAVA通訊(三)——實現多人聊天Java
- Java中用Aeron實現UDP訊息傳遞JavaUDP
- Java中實現並行請求兩種方式Java並行
- node.js 用socket實現聊天Node.js
- 用 Java 實現回撥例程 (轉)Java
- 亂彈運用Direct技術進行影像裁減的實現(下)(轉)
- Java實現AOP的集中方式Java
- 簡單的Java實現Netty進行通訊JavaNetty
- java執行緒實現的三種方式以及靜態代理Java執行緒
- [轉]Java 執行緒池的原理與實現Java執行緒
- redhat 9.0 中任務自動執行的實現方式 (轉)Redhat
- InnoDB行鎖實現方式
- 用go實現併發聊天室Go
- Java高併發與多執行緒(二)-----執行緒的實現方式Java執行緒
- 聊天室應用開發實踐(二):實現基於 Web 的聊天室Web