教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 求职职场 >

网络编程课程设计-简单的聊天室程序设计(2)

来源:网络收集 时间:2026-09-22
导读: public UDPmessage(){ setTitle(UDP聊天程序);//设置窗体标题 setBounds(100,100,400,300);//窗体定位与大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭操作/** * */ private static final long s

public UDPmessage(){

setTitle("UDP聊天程序");//设置窗体标题 setBounds(100,100,400,300);//窗体定位与大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭操作/** * */ private static final long serialVersionUID = 1L; private JTextArea text;//信息接收文本域 private JTextField ipText;//IP文本框 private JTextField sendText;//信息发送文本框 private JButton button;//发送按钮 private DatagramSocket socket;//数据报套接字 private JScrollBar vsBar;//滚动条

为退出程序

setLayout(new BorderLayout());//窗体使用边界布局管理器

Socket UDP

动面板

text=new JTextArea();//实例化信息接收文本域 text.setEditable(false);//信息接收文本域不可编辑 JScrollPane textPanel=new JScrollPane(text);//信息接收文本域添加滚vsBar=textPanel.getVerticalScrollBar();//获取滚动面板的垂直滚动条 add(textPanel,BorderLayout.CENTER);//添加滚动面板到窗体居中位JPanel panel=new JPanel();//创建panel面板 BorderLayout panelLayout=new BorderLayout();//创建边界布局管理panelLayout.setHgap(5);//设置布局水平边界 panel.setLayout(panelLayout);//将布局管理器注入panel面板 ipText=new JTextField("122.206.73.14");//实例化IP文本框(请输入你

自己IP地址)

panel

button=new JButton("发送");//实例化发送按钮 panel.add(button,BorderLayout.EAST);//添加按钮到panel面板 add(panel,BorderLayout.SOUTH);//添加面板到窗体 setVisible(true);//显示窗体 server();//调用Server()方法 button.addActionListener(this);//添加按钮事件监听器 } panel.add(ipText,BorderLayout.WEST);//添加文本框到panel面板 sendText=new JTextField();//实例化信息发送文本框 panel.add(sendText,BorderLayout.CENTER);//添加信息发送文本框到

private void server(){

try{ socket=new DatagramSocket(9527);//实例化数据报套接字 byte[] buf=new byte[1024];

Socket UDP

final DatagramPacket dpl=new DatagramPacket(buf,buf.length);//创

建接收数据的数据包

Runnable runnable=new Runnable(){//定义线程 public void run(){ while(true){ //使用无限循环体 try{ Thread.sleep(100);//线程休眠时间为100ms socket.receive(dpl);//接收数据包 int length=dpl.getLength(); String message=new

String(dpl.getData(),0,length);//获取数据包的字符串信息

String ip=dpl.getAddress().getHostAddress();

if(!InetAddress.getLocalHost().getHostAddress().equals(ip))

text.append(ip+":\n "+message+"\n"); vsBar.setValue(vsBar.getMaximum());//控制

信息滚动

}

}; } } }catch(IOException e){ e.printStackTrace(); }catch(InterruptedException e){ } e.printStackTrace(); new Thread(runnable).start(); }catch(SocketException e){ } e.printStackTrace();

Socket UDP

public void actionPerformed(ActionEvent ev){

try{ String ip=ipText.getText();//获取IP文本框内容 InetAddress address=InetAddress.getByName(ip); byte[] data=sendText.getText().getBytes();//获取发送的数据 DatagramPacket dp=new

DatagramPacket(data,data.length,address,9527);//定义数据包

机IP

}

}

运行后的对话框

} public static void main(String[] args) { UDPmessage udp= new UDPmessage(); udp.setVisible(true); //将发送信息添加到信息接收文本域中 text.append(myip+":\n "+sendText.getText()+":\n"); socket.send(dp);//发送数据包 sendText.setText(null); String myip=InetAddress.getLocalHost().getHostAddress();//获取本}catch(UnknownHostException e){ e.printStackTrace(); }catch(IOException e){ } e.printStackTrace();

Socket UDP

主机B的代码:

package qq;

import java.awt.*;

import java.awt.event.*;

import java.io.IOException;

import .*;

import javax.swing.*;

public class UDPmessage extends JFrame implements ActionListener {

/** * */ private static final long serialVersionUID = 1L; private JTextArea text;//信息接收文本域 private JTextField ipText;//IP文本框 private JTextField sendText;//信息发送文本框 private JButton button;//发送按钮 private DatagramSocket socket;//数据报套接字 private JScrollBar vsBar;//滚动条

Socket UDP

public UDPmessage(){

setTitle("UDP聊天程序");//设置窗体标题 setBounds(100,100,400,300);//窗体定位与大小 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭操作为退出程序

setLayout(new BorderLayout());//窗体使用边界布局管理器 text=new JTextArea();//实例化信息接收文本域 text.setEditable(false);//信息接收文本域不可编辑 JScrollPane textPanel=new JScrollPane(text);//信息接收文本域添加滚动面板 vsBar=textPanel.getVerticalScrollBar();//获取滚动面板的垂直滚动条 add(textPanel,BorderLayout.CENTER);//添加滚动面板到窗体居中位置 JPanel panel=new JPanel();//创建panel面板 BorderLayout panelLayout=new BorderLayout();//创建边界布局管理器 panelLayout.setHgap(5);//设置布局水平边界 panel.setLayout(panelLayout);//将布局管理器注入panel面板 ipText=new JTextField("122.206.73.136");//实例化IP文本框(请输入你自己IP地址)

panel.add(ipText,BorderLayout.WEST);//添加文本框到panel面板 sendText=new JTextField();//实例化信息发送文本框 panel.add(sendText,BorderLayout.CENTER);//添加信息发送文本框到panel button=new JButton("发送");//实例化发送按钮 panel.add(button,BorderLayout.EAST);//添加按钮到panel面板 add(panel,BorderLayout.SOUTH);//添加面板到窗体 setVisible(true);//显示窗体 server();//调用Server()方法 button.addActionListener(this);//添加按钮事件监听器 }

private void server(){

try{

Socket UDP

socket=new DatagramSocket(9527);//实例化数据报套接字 byte[] buf=new byte[1024]; final DatagramPacket dpl=new DatagramPacket(buf,buf.length);//创建接收数据的数据包

Runnable runnable=new Runnable(){//定义线程 public void run(){ while(true){ //使用无限循环体 try{ Thread.sleep(100);//线程休眠时间为100ms …… 此处隐藏:4303字,全部文档内容请下载后查看。喜欢就下载吧 ……

网络编程课程设计-简单的聊天室程序设计(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/122385.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)