网络协议课程设计基于UDP的多人聊天系统源代码.docx

上传人:b****2 文档编号:603419 上传时间:2023-04-29 格式:DOCX 页数:13 大小:310.16KB
下载 相关 举报
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第1页
第1页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第2页
第2页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第3页
第3页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第4页
第4页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第5页
第5页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第6页
第6页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第7页
第7页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第8页
第8页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第9页
第9页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第10页
第10页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第11页
第11页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第12页
第12页 / 共13页
网络协议课程设计基于UDP的多人聊天系统源代码.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

网络协议课程设计基于UDP的多人聊天系统源代码.docx

《网络协议课程设计基于UDP的多人聊天系统源代码.docx》由会员分享,可在线阅读,更多相关《网络协议课程设计基于UDP的多人聊天系统源代码.docx(13页珍藏版)》请在冰点文库上搜索。

网络协议课程设计基于UDP的多人聊天系统源代码.docx

网络协议课程设计基于UDP的多人聊天系统源代码

基于UDP的多人聊天系统

只需把两个客户段代码与一个服务器代码导入就可以了,记得要把服务器ip:

192.168.1.77(也可以自己在服务器程序中改一下),每个客户端需要设置一下ip,比如A客户端:

192.168.1.78,B客户端:

192.168.1.88,A客户端向B客户端通讯时,“请输入对方ip”,这项改为192.168.1.88,就可以了。

客户端源代码程序:

ChatFram.java

packageChatFrame_01;

import.*;

importjava.io.*;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.lang.*;

importjava.awt.color.*;

importjavax.swing.JOptionPane;

publicclassChatFrameextendsJFrame{

JPanelcontentPane;

JLabellabel1=newJLabel();//发送消息

JLabellabel2=newJLabel();//输入ip

Labellabel3=newLabel();//输入端口标签

Labellabel4=newLabel();//输出端口标签

JTextFieldtextField1=newJTextField();//发送消息

JTextFieldtextField2=newJTextField();//输入ip

JTextFieldtextField3=newJTextField();//获得输入端口

JTextFieldtextField4=newJTextField();//获得输出端口

JButtonbutton1=newJButton("发送");//发送消息

TextAreatextArea1=newTextArea();

JOptionPanejopane=newJOptionPane();

DatagramPacketsendpacket,receivepacket;//声明发送和接收数据包

DatagramSocketsendsocket,receivesocket;//声明发送和接收DatagramSocket

publicChatFrame(){

enableEvents(AWTEvent.WINDOW_EVENT_MASK);

try{

toInit();

}catch(Exceptione){

e.printStackTrace();

}

}

privatevoidtoInit()throwsException{

contentPane=(JPanel)this.getContentPane();

label1.setText("发送信息:

");

label1.setBounds(newRectangle(13,100,60,21));

contentPane.setLayout(null);

contentPane.setBackground(Color.pink);

this.setSize(newDimension(363,502));

this.setTitle("多人聊天室");

label2.setText("输入对方IP地址:

");

label2.setBounds(newRectangle(12,19,109,23));

label3.setText("输入端口:

");

label3.setBounds(newRectangle(12,58,55,22));

label4.setText("输出端口:

");

label4.setBounds(newRectangle(180,58,55,22));

textField3.setText("3000");

textField4.setText("3001");

button1.setBounds(newRectangle(280,100,59,21));

button1.addActionListener(newjava.awt.event.ActionListener(){

publicvoidactionPerformed(ActionEvente){

button1_actionPerformed(e);

}

});

textField1.addKeyListener(newKeyAdapter(){

publicvoidkeyPressed(KeyEvente){

if(e.getKeyCode()==KeyEvent.VK_ENTER){

Stringstr=textField2.getText();

Stringstr1=textField1.getText();

if(pareTo("")!

=0&&!

"".equals(str1)){

try{

textArea1.append("\nto"+textField2.getText()

+":

"+"3000"+"say:

"

+textField1.getText());

Strings=textField1.getText();

bytedata[]=s.getBytes("UTF-8");

sendpacket=newDatagramPacket(

data,

data.length,

InetAddress.getByName("192.168.1.77"),

6666);

sendsocket.send(sendpacket);

}catch(IOExceptionexc){

exc.printStackTrace();

}

textField1.setText("");

}

}

}

});

textField4.setBounds(newRectangle(240,58,90,22));

textField3.setBounds(newRectangle(70,58,90,22));

textField2.setBounds(newRectangle(123,20,120,19));

textField1.setBounds(newRectangle(76,100,190,19));

textArea1.setBounds(newRectangle(11,140,333,315));

textArea1.setEditable(false);

textArea1.setBackground(Color.white);

contentPane.add(label4,null);

contentPane.add(label3,null);

contentPane.add(label2,null);

contentPane.add(label1,null);

contentPane.add(textField1,null);

contentPane.add(textField2,null);

contentPane.add(textField3,null);

contentPane.add(textField4,null);

contentPane.add(textArea1,null);

contentPane.add(button1,null);

this.setVisible(true);

bind();

}

protectedvoidprocessWindowEvent(WindowEvente){

super.processWindowEvent(e);

if(e.getID()==WindowEvent.WINDOW_CLOSING){

System.exit(0);

}

}

publicvoidwaitforpackets(){//检测并接受对方发来的消息

while(true){

try{

byte[]array=newbyte[100];

receivepacket=newDatagramPacket(array,array.length);

receivesocket.receive(receivepacket);//接收

textArea1.append("\nfrom"+receivepacket.getAddress()+":

"

+receivepacket.getPort()+"get:

");

Stringreceived=newString(receivepacket.getData(),0,

receivepacket.getLength(),"UTF-8");

textArea1.append(received);

}catch(IOExceptionse){

se.printStackTrace();

}

}

}

voidbind(){//和对方建立连

try{

sendsocket=newDatagramSocket(3000);

receivesocket=newDatagramSocket(3333);

}catch(Exceptione){

}

}

voidbutton1_actionPerformed(ActionEvente){//发送消息到对方

Stringstr=textField2.getText();

Stringstr1=textField1.getText();

if(pareTo("")!

=0&&!

"".equals(str1)){

try{

textArea1.append("\nto"+textField2.getText()+":

"+"3000"

+"say:

"+textField1.getText());

Strings=textField2.getText()+"|"+textField1.getText();

bytedata[]=s.getBytes("UTF-8");

sendpacket=newDatagramPacket(data,data.length,InetAddress

.getByName("192.168.1.77"),6666);

sendsocket.send(sendpacket);

}catch(IOExceptionexc){

exc.printStackTrace();

}

textField1.setText("");

}

}

}

 

ChatApp.java

packageChatFrame_01;

importjava.io.*;

importjavax.swing.UIManager;

importjava.awt.*;

publicclassChatApp{

booleanpackFrame=false;

ChatApp(){

ChatFrameframe=newChatFrame();

if(packFrame){

frame.pack();

}else{

frame.validate();

}

//放置窗体在屏幕中央

DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();

DimensionframeSize=frame.getSize();

if(frameSize.height>screenSize.height){

frameSize.height=screenSize.height;

}

if(frameSize.width>screenSize.width){

frameSize.width=screenSize.width;

}

frame.setLocation((screenSize.width-frameSize.width)/2,

(screenSize.height-frameSize.height)/2);

frame.setVisible(true);

frame.waitforpackets();

}

publicstaticvoidmain(String[]args){

newChatApp();

}

}

 

服务器端:

Server.java

packageChatFrame_01;

import.DatagramPacket;

import.DatagramSocket;

import.InetAddress;

import.Socket;

importjava.util.*;

publicclassServer{

Listips=newArrayList();

DatagramSocketsocket;

DatagramPacketpacket;

DatagramSocketssocket;

DatagramPacketspacket;

publicServer()throwsException{

socket=newDatagramSocket(6666);

ssocket=newDatagramSocket(8888);

}

publicvoidlisten()throwsException{

byte[]array=newbyte[100];

packet=newDatagramPacket(array,array.length);

socket.receive(packet);

byte[]data=packet.getData();

Stringreceived=newString(data,0,data.length,"UTF-8");

System.out.println(received);

String[]ss=received.split("\\|");

Stringip=ss[0];

byte[]dt=ss[1].getBytes("UTF-8");

spacket=newDatagramPacket(dt,dt.length,InetAddress.getByName(ip),3333);

ssocket.send(spacket);

}

publicstaticvoidmain(String[]args)throwsException{

Servers=newServer();

while(true){

s.listen();

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2