java實(shí)現(xiàn)簡(jiǎn)易局域網(wǎng)聊天功能代碼介紹
局域網(wǎng)通常是分布在一個(gè)有限地理范圍內(nèi)的網(wǎng)絡(luò)系統(tǒng),一般所涉及的地理范圍只有幾公里。局域網(wǎng)專(zhuān)用性非常強(qiáng),具有比較穩(wěn)定和規(guī)范的拓?fù)浣Y(jié)構(gòu)。這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)易局域網(wǎng)聊天功能,使用UDP模式編寫(xiě)一個(gè)聊天程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
Java代碼:
/*
使用UDP模式,編寫(xiě)一個(gè)聊天程序
有發(fā)送和接收數(shù)據(jù)2部分,
一個(gè)線程接收,一個(gè)線程發(fā)送
由于發(fā)送和接收動(dòng)作是不一致的,所以要使用2個(gè)run方法
而且這兩個(gè)方法要封裝到不同的類(lèi)中
本程序忽略了部分異常的處理,也未加入U(xiǎn)I組件
這樣比較簡(jiǎn)潔
發(fā)送端口9998
接受端口9999
用的是局域網(wǎng)廣播地址,所以自己發(fā)的消息自己也收到了
[示例]:簡(jiǎn)易控制臺(tái)聊天程序
*/
import java.net.*;
import java.io.*;
class Demo
{
public static void main(String[] args) throws Exception
{
DatagramSocket sendSocket = new DatagramSocket(9998); //發(fā)送端
DatagramSocket receSocket = new DatagramSocket(9999); //接收端
new Thread(new MsgSend(sendSocket)).start(); //發(fā)送線程
new Thread(new MsgRece(receSocket)).start(); //接受線程
}
}
class MsgSend implements Runnable //發(fā)送
{
private DatagramSocket dsock;
public MsgSend(DatagramSocket dsock)
{
this.dsock= dsock;
}
public void run()
{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String lineStr = null;
try
{
while(true)
{
lineStr = bufr.readLine();
if(lineStr!=null)
{
if(lineStr.equals("over886"))
{
break;
}
else
{
byte[] dataBuf = lineStr.getBytes();
DatagramPacket dataPack = //數(shù)據(jù)打包
new DatagramPacket( dataBuf,
dataBuf.length,
InetAddress.getByName("192.168.1.255"), //廣播
9999 //目標(biāo)端口
);
dsock.send(dataPack);
}
}
}
bufr.close();
dsock.close();
}
catch(Exception e)
{
throw new RuntimeException("發(fā)送失敗!");
}
}
}
class MsgRece implements Runnable //接收
{
private DatagramSocket dsock;
public MsgRece(DatagramSocket dsock)
{
this.dsock= dsock;
}
public void run()
{
try
{
while(true)
{
byte[] dataBuf = new byte[1024];
DatagramPacket dataPack = new DatagramPacket(dataBuf,dataBuf.length);
dsock.receive(dataPack); //將獲取的數(shù)據(jù)保存到指定的數(shù)據(jù)包
String ip = dataPack.getAddress().getHostAddress();
String data = new String(dataPack.getData(),0,dataPack.getLength());
int port = dataPack.getPort();
System.out.println();
System.out.println("來(lái)自ip為 "+ip+" <對(duì)方端口>: "+port+" 的消息");
System.out.println(data);
}
}
catch(Exception e)
{
throw new RuntimeException("接受失敗!");
}
finally
{
dsock.close();
}
}
}
補(bǔ)充:局域網(wǎng)、校園網(wǎng)安全維護(hù)方法
校園網(wǎng)絡(luò)分為內(nèi)網(wǎng)和外網(wǎng),就是說(shuō)他們可以上學(xué)校的內(nèi)網(wǎng)也可以同時(shí)上互聯(lián)網(wǎng),大學(xué)的學(xué)生平時(shí)要玩游戲購(gòu)物,學(xué)校本身有自己的服務(wù)器需要維護(hù);
在大環(huán)境下,首先在校園網(wǎng)之間及其互聯(lián)網(wǎng)接入處,需要設(shè)置防火墻設(shè)備,防止外部攻擊,并且要經(jīng)常更新抵御外來(lái)攻擊;
由于要保護(hù)校園網(wǎng)所有用戶(hù)的安全,我們要安全加固,除了防火墻還要增加如ips,ids等防病毒入侵檢測(cè)設(shè)備對(duì)外部數(shù)據(jù)進(jìn)行分析檢測(cè),確保校園網(wǎng)的安全;
外面做好防護(hù)措施,內(nèi)部同樣要做好防護(hù)措施,因?yàn)橛械膶W(xué)生電腦可能帶回家或者在外面感染,所以?xún)?nèi)部核心交換機(jī)上要設(shè)置vlan隔離,旁掛安全設(shè)備對(duì)端口進(jìn)行檢測(cè)防護(hù);
內(nèi)網(wǎng)可能有ddos攻擊或者arp病毒等傳播,所以我們要對(duì)服務(wù)器或者電腦安裝殺毒軟件,特別是學(xué)校服務(wù)器系統(tǒng)等,安全正版安全軟件,保護(hù)重要電腦的安全;
對(duì)服務(wù)器本身我們要安全server版系統(tǒng),經(jīng)常修復(fù)漏洞及更新安全軟件,普通電腦一般都是撥號(hào)上網(wǎng),如果有異常上層設(shè)備監(jiān)測(cè)一般不影響其他電腦。做好安全防范措施,未雨綢繆。
局域網(wǎng)聊天功能相關(guān)文章: