网络编程课程设计-简单的聊天室程序设计(2)
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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [求职职场]加法运算定律的运用练习题
- [求职职场]大型石油化工工业过程节能新技术
- [求职职场]2015-2020年中国箱纸板行业分析与投资
- [求职职场]NADEX-IWC5A点焊机故障代码
- [求职职场]英语阅读 非常有用
- [求职职场]鲁卫疾控发〔2012〕2号(联合,印发山东
- [求职职场]2014年莆田公务员行测技巧:数字推理的
- [求职职场]基于最近发展区理论的高中数学课堂有效
- [求职职场]与贸易有关的知识产权协议
- [求职职场]【王风范】微演说·职场演说三
- [求职职场]新时代国珍健康大课堂
- [求职职场]群论期末考试复习题
- [求职职场]施工现场消防安全专项施工方案(范本)-
- [求职职场]初中物理光学知识点归纳完美版
- [求职职场]毕业设计总结与体会范文
- [求职职场]江南大学2018年上半年展示设计第1阶段
- [求职职场]景尚乡民兵参战支前保障方案
- [求职职场]【优质】2019年工会职工之家建设工作总
- [求职职场]数据库技术与应用—SQL Server 2008(第
- [求职职场]汽车变速箱构造与工作原理
- 首钢工业区工业遗产资源保护与再利用研
- 第4课 《大学》节选
- 2016程序文件——检验检测结果发布程序
- 2011年高考试题文言文阅读全解释__2011
- 化学是一门基础的自然科学
- 海外做市商制度的借鉴意义
- 外国建筑史复习资料(
- 七年级下思想品德期末综合测试(二)
- 思政课部2013年上学期教学工作总结
- 电大国际公法任务3 0004
- 《圆的认识》教学设计
- 中国轨道交通牵引变流器行业市场发展调
- 中泰证券#定期报告:坚守时代硬科技和
- 浅论企业财务管理与企业经营投资风险的
- 大功率半导体激光器光纤耦合技术调研报
- 中国传统家具的现状与发展探讨
- Broadcom数字电视芯片助海尔扩展高清电
- 新HSK4词汇练习 超全(五)
- 2013届高考数学单元考点复习12
- 雨霖铃精品课件




