在《UDP通讯协议》这篇文章中,简单的说明了Udp协议特征及如何Udp协议传输数据

这里将用Udp协议技术,编写一个简单的聊天程序:

//发送端:

package com.shindo.java.udp;
import java.io.*;
import java.net.*;
/**
* 使用多线程技术封装发送端
*/
public class UdpSendByThread implements Runnable { private DatagramSocket ds;
public UdpSendByThread(DatagramSocket ds){
this.ds = ds;
}
public void run(){
//读取键盘录入
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
//按行读取数据,并发送出去
String line = null;
try {
while((line = bufr.readLine()) != null){
if("byebye".equals(line)) break; byte[] buf = line.getBytes(); DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),11011); ds.send(dp);
}
} catch (Exception e) {
e.printStackTrace();
} }
}

//接收端:

package com.shindo.java.udp;
import java.io.*;
import java.net.*;
/**
* 使用多线程技术封装接收端
*/
public class UdpReceiveByThread implements Runnable{ private DatagramSocket ds;
public UdpReceiveByThread(DatagramSocket ds){
this.ds = ds;
}
public void run(){
try {
while(true){
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress();
System.out.println(ip + "..........isconnected"); String data = new String(dp.getData(),0,dp.getLength());
System.out.println(data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

启动类:

package com.shindo.java.udp;
import java.net.*;
/**
* 实现使用Udp协议通讯的简单聊天程序
*/
public class ChatDemo {
public static void main(String[] args) throws Exception{
DatagramSocket ds = new DatagramSocket();
DatagramSocket dsPort = new DatagramSocket(11011); new Thread(new UdpSendByThread(ds)).start();
new Thread(new UdpReceiveByThread(dsPort)).start(); }
}

Udp实现简单的聊天程序的更多相关文章

  1. Socket编程实践(3) 多连接服务器实现与简单P2P聊天程序例程

    SO_REUSEADDR选项 在上一篇文章的最后我们贴出了一个简单的C/S通信的例程.在该例程序中,使用"Ctrl+c"结束通信后,服务器是无法立即重启的,如果尝试重启服务器,将被 ...

  2. C#编写简单的聊天程序

    这是一篇基于Socket进行网络编程的入门文章,我对于网络编程的学习并不够深入,这篇文章是对于自己知识的一个巩固,同时希望能为初学的朋友提供一点参考.文章大体分为四个部分:程序的分析与设计.C#网络编 ...

  3. 简单的聊天程序,主要用到的是Socket

    服务端: import java.io.*; import java.net.*; import java.util.*; public class ChatServer { boolean stat ...

  4. 网络编程应用:基于UDP协议【实现聊天程序】--练习

    要求: 使用UDP协议实现一个聊天程序 代码: 发送端: package UDP聊天程序; import java.io.IOException; import java.net.DatagramPa ...

  5. 使用Ajax long polling实现简单的聊天程序

    关于web实时通信,通常使用长轮询或这长连接方式进行实现. 为了能够实际体会长轮询,通过Ajax长轮询实现了一个简单的聊天程序,在此作为笔记. 长轮询 传统的轮询方式是,客户端定时(一般使用setIn ...

  6. C#编写简单的聊天程序(转)

    这是一篇基于Socket进行网络编程的入门文章,我对于网络编程的学习并不够深入,这篇文章是对于自己知识的一个巩固,同时希望能为初学的朋友提供一点参考.文章大体分为四个部分:程序的分析与设计.C#网络编 ...

  7. UDP—Socket,套接字聊天简单的聊天程序。

    思路:(发送端) 1.既然需要聊天.就应该怎么建立聊天程序,,DatagramSocket对象http://www.w3cschool.cc/manual/jdk1.6/ DatagramSocket ...

  8. 基于UDP协议的控制台聊天程序(c++版)

    本博客由Rcchio原创,转载请告知作者 ------------------------------------------------------------------------------- ...

  9. Java网络编程以及简单的聊天程序

    网络编程技术是互联网技术中的主流编程技术之一,懂的一些基本的操作是非常必要的.这章主要讲解网络编程,UDP和Socket编程,以及使用Socket做一个简单的聊天软件. 全部代码下载:链接 1.网络编 ...

随机推荐

  1. 自己意淫的一个简陋的Python网站扫描器

    使用的模块 threading.optparse.urllib2 本地需要放字典,名字需大写. 上代码 def request(url,pathName): try: import urllib2 p ...

  2. flash与字符串:字符串与属性

    有时候,我们想通过设置一个DisplayObject 类是属性值,只是需要通过点来引用即可.有时候,通过字符串也可以引用显示对象里面的属性值.     下面举个例子 .                 ...

  3. 菜鸟学EJB(二)——在同一个SessionBean中使用@Remote和@Local

    不废话.直接进入正题: 在Jboss4及曾经的版本号中,例如以下代码能够成功部署: package com.tjb.ejb; import javax.ejb.Local; import javax. ...

  4. Network 20Q--Q2 How does Google sell ad spaces?

    在使用Google搜索的时候会发现,搜索出来的页面除了在左边显示搜索结果以外,还会页面的右边推荐一些广告.那么Google是怎么从这些广告挣钱以及广告商可以通过Google广告获得什么利益呢? Goo ...

  5. VS2010不能打开预编译的网站源码的原因是什么?(转之csdn)

    原问题: 今天将写好的一个网站源码目录拷贝到另一台电脑上,但打开时提示:    你要打开一个预编译的网站,你可以查看该站点,但对它进行更改可能会造成该网站停止运行,若要修改站点,建议先编辑原始网站中的 ...

  6. Csharp 高级编程 C7.1.2

    第七章 代理(1) 一.代理要声明 二.代理使用步骤 声明代理 初始化代理(使用 实例的方法名 作为参数) 使用代理 代码示例: /*C7.1.2*/ using System; using Syst ...

  7. VC防止程序被多次运行 互斥体方法

    BOOL CXXXApp::InitInstance() //函数内添加代码 HANDLE hMutex=CreateMutex(NULL,TRUE,"test"); // 用于检 ...

  8. 三、服务解析(Resolving Services)

    当你完成组件注册,并将组件暴露为适当的服务后你就可以通过容器或者容器的子生命周期域来解析服务(After you have your components registered with approp ...

  9. 为什么要用Math.sqrt(i)方法

    java 练习题 判断 101-200 之间有多少个素数,并输出所有素数 public class Prime { public static int count = 0; public static ...

  10. sql 用openxml 将xml转换为数据表Table

    CREATE PROCEDURE up_OpenXml ( @xml XML ) AS BEGIN DECLARE @Pointer INT EXECUTE sp_xml_preparedocumen ...