UDP网络程序-1
来源:互联网 发布:超轻粘土淘宝 编辑:程序博客网 时间:2024/05/15 23:17
1. 用UDP程序进行发送和接受
先运行接收程序:
package UDP;
import java.net.*;
public class UdpRecv {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
DatagramSocket ds=new DatagramSocket(3000);
byte [] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
ds.receive(dp);
String info=new String(dp.getData(),0,dp.getLength());
System.out.println(info+"from"+dp.getAddress().getHostAddress()+""+dp.getPort());
ds.close();
}
}
再运行发送程序:
package UDP;
import java.net.*;
public class UdpSend {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
DatagramSocket ds=new DatagramSocket();
String strInfo="我来了";
ds.send(new DatagramPacket(strInfo.getBytes(),strInfo.getBytes().length,InetAddress.getByName("127.0.0.1"),3000));
ds.close();
}
}
2. 用UDP程序编写聊天软件
1) 编写用户图形界面
2) 编写网络信息发送功能
3) 编写网络消息接收功能
程序代码:
package chat;
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.net.*;
public class Chat extends Frame {
List lst=new List(6);//定义一个接收聊天信息的列表
TextField tfIP=new TextField(15);//定义输入ip信息的文本框
TextField tfData=new TextField(20);//定义发动聊天信息的文本框
DatagramSocket ds=null;//定义一个socket
public Chat()
{
try {
ds=new DatagramSocket(3000);//实例化一个soket对象,端口号为3000
} catch (SocketException e1) {
e1.printStackTrace();
}
this.add(lst,"Center");//把聊天信息的列表添加在主窗口的中间
Panel p=new Panel();//定义一个面板
this.add(p,"South");//把面板添加到主窗口的下部
p.setLayout(new BorderLayout());//定义该面板的布局格式
p.add(tfIP,"West");//把输入ip信息的框定义在面板左侧
p.add(tfData,"East");//把对话框定义在面板右侧
new Thread(new Runnable()
{
public void run() {
byte []buf=new byte[1024];//定义一个字节数组
DatagramPacket dp=new DatagramPacket(buf,1024);//定义一个接收数据的数据包
while (true) {//循环读取数据
try {
ds.receive(dp);//通过soket向包中读取数据
String infoString=new String(dp.getData(),0,dp.getLength());//把接收到的数据转化为字符串
lst.add(infoString+" from"+dp.getAddress().getHostAddress()+":"+dp.getPort(),0);//显示接收到的数据,和该数据的传送ip和端口号
} catch (IOException e) {
if (!ds.isClosed()) {
e.printStackTrace();//如果不是因为soket关闭引起的异常则显示
}
}
}
}
}).start();//开启该线程
tfData.addActionListener(new ActionListener(){//编写文本输入框的监听器
public void actionPerformed(ActionEvent arg0) {
byte []buf=tfData.getText().getBytes();//定义一个字节数组,用来接收文本输入框的数据
try {
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(tfIP.getText()),3000);//把字节数组中的数据导入到数据包里,并声明数据发送的ip和端口号
ds.send(dp);//发送数据
tfData.setText("");//清空文本输入框
} catch (Exception e) {
e.printStackTrace();
}
}
});
addWindowListener(new WindowAdapter(){//关闭按钮的响应事件
public void windowClosing(WindowEvent e)
{
ds.close();
dispose();
System.exit(0);
}
});
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("starting ...");
Chat t=new Chat();
t.setSize(300, 400);//设置窗口的大小
t.setTitle("Chat");
t.setVisible(true);
t.setResizable(false);
}
}
- UDP网络程序-1
- UDP网络程序
- UDP网络程序
- 网络程序之UDP通讯
- socket UDP网络程序编写
- udp网络聊天控制台程序
- 黑马程序员-UDP网络程序
- C# UDP 网络聊天程序
- VC++ UDP网络控制台程序
- UDP网络延迟测试程序
- VC++ UDP网络控制台程序
- VC++ UDP网络控制台程序
- 网络编程之UDP网络程序
- 网络编程1--UDP
- 一个简单的 UDP网络程序
- 基于UDP协议的网络程序
- 基于UDP协议的网络程序
- 基于UDP的多线程网络通信程序
- Applet学习-1
- 折半查找
- Applet课后练习-2
- 新人
- POJO、VO、DTO、DO
- UDP网络程序-1
- glib GMainLoop GMainContext GSource
- TCP网络程序-2
- ubuntu进入系统后工具栏和任务栏消失
- 网络编程思考与实践-3
- uva 10025 The ? 1 ? 2 ? ... ? n = k problem
- 浅谈C++的string类型
- MySQL的脚本执行
- MySQL的脚本执行