udp协议java代码 UDP协议百科

将client.java改写成基于UDP协议的通信程序

import java.net.*;

为睢宁县等地区用户提供了全套网页设计制作服务,及睢宁县网站建设行业解决方案。主营业务为网站设计制作、网站建设、睢宁县网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

import java.io.*;

import java.awt.*;import java.awt.event.*;

import java.applet.*;

import java.util.*;

public class Computer_client extends Applet implements Runnable,ActionListener{

Button 计算;TextField 输入三边长度文本框,计算结果文本框;

//DataInputStream in=null; DataOutputStream out=null;

DatagramSocket socket;//用于发送/接收UDP;

DatagramPacket packet,packet1;//用于保存UDP内容;

byte[] buffer1=new byte[1000];

byte[] buffer2=new byte[1000];

Thread thread;

InetAddress addr;

public void init()

{ setLayout(new GridLayout(2,2));

Panel p1=new Panel(),p2=new Panel();

计算=new Button(" 计算");

输入三边长度文本框=new TextField(12);计算结果文本框=new TextField(12);

p1.add(new Label("输入三角形三边的长度,用逗号或空格分隔:"));

p1.add( 输入三边长度文本框);

p2.add(new Label("计算结果:"));p2.add(计算结果文本框);p2.add(计算);

计算.addActionListener(this);

add(p1);add(p2);

//this.setSize(200,300);

//this.setVisible(true);

}

public void start()

{

try

{ //和小程序所驻留的服务器建立UDP连接:

socket=new DatagramSocket(1234);

//packet=new DatagramPacket(buffer1,buffer1.length,"127.0.0.1",4331);

}

catch (IOException e){}

if(thread == null)

{ thread = new Thread(this);

thread.start();

}

}

public void run()

{ String s=null;

while(true)

{ try{

//thread.sleep(1000);//使线程等待一段时间,以便服务器进行计算

packet1=new DatagramPacket(buffer2,buffer2.length);//生成接收的packet;

socket.receive(packet1);//接受服务器传来的packet;

s=new String(packet1.getData());

if(s.equals(输入三边长度文本框.getText()))

计算结果文本框.setText("计算中,请再按次...");

else

计算结果文本框.setText(s);

}

catch(Exception e) {

计算结果文本框.setText("与服务器已断开");

break;

}

}

}

public void actionPerformed(ActionEvent e)

{ if(e.getSource()==计算)

{ String s=输入三边长度文本框.getText();

if(!s.equals("")) //这个地方源程序有问题

{

buffer1=s.getBytes();

try{

addr=InetAddress.getLocalHost();

packet=new DatagramPacket(buffer1,buffer1.length,addr,4331);

socket.send(packet); //向服务器发送packet;

}

catch(Exception ee){System.out.println("向服务器发送数据报失败!");};

}

else

计算结果文本框.setText("请输入内容!");

}

}

}

Java如何使用UDP协议实现多人聊天?

UDP 是广播的,如果是做实时的聊天,就开两个线程、不需要服务器端。一个专门接收、一个做发送

急求一个关于UDP的JAVA实现多人聊天源代码

import java.io.InputStream;

import java.io.DataInputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.DataOutputStream;

import java.io.BufferedReader;

import java.net.ServerSocket;

import java.net.Socket;

import java.io.IOException;

import java.util.Date;

class Server

{

public Server()

{

try

{

ServerSocket s=new ServerSocket(8888);

Socket ss=s.accept();

OutputStream out=ss.getOutputStream();

DataOutputStream dout=new DataOutputStream(out);

InputStream in=ss.getInputStream();

DataInputStream din=new DataInputStream(in);

System.out.print(din.readUTF()+"!");

dout.writeUTF("你已经连接到服务器"+"\t"+"你的地址:"+ss.getInetAddress()+"\t"

+"你的链接端口:"+ss.getLocalPort()+"\n");

new ReadMessage(din).start();

new SendMessage(dout).start();

}

catch (IOException e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{

new Server();

}

}

//接受客户端信息

class ReadMessage extends Thread

{

private DataInputStream din;

public ReadMessage(DataInputStream din)

{

this.din=din;

}

public void run()

{

String str;

try

{

while (true)

{

str=din.readUTF();

System.out.println(new Date().toLocaleString()+"客户端说:"+str);

if (str.equals("bye"))

{

System.out.println("客户端下线!");

break;

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

// 发出服务器信息

class SendMessage extends Thread

{

private DataOutputStream dout;

public SendMessage(DataOutputStream dout)

{

this.dout=dout;

}

public void run()

{

InputStreamReader inr=new InputStreamReader(System.in);

BufferedReader buf=new BufferedReader(inr);

String str;

try

{

while(true)

{

str=buf.readLine();

dout.writeUTF(str);

if (str.equals("bye"))

{

System.out.println("服务器退出!");

System.exit(1);

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

import java.io.InputStream;

import java.io.DataInputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.DataOutputStream;

import java.io.BufferedReader;

import java.net.Socket;

import java.io.IOException;

import java.util.Date;

class Client

{

public Client()

{

try

{

Socket s=new Socket("192.168.1.2",8888);

InputStream in=s.getInputStream();

DataInputStream din=new DataInputStream(in);

OutputStream out=s.getOutputStream();

DataOutputStream dout=new DataOutputStream(out);

dout.writeUTF("服务器你好!我是客户端");

System.out.println(din.readUTF());

new Thread(new SenderMessage(dout)).start();

new Thread(new ReaderMessage(din)).start();

}

catch (IOException e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{

new Client();

}

}

class ReaderMessage implements Runnable

{

private DataInputStream din;

public ReaderMessage(DataInputStream din)

{

this.din=din;

}

public void run()

{

String str;

try

{

while(true)

{

str=din.readUTF();

System.out.println(new Date().toLocaleString()+"服务器说:"+str);

if (str.equals("bye"))

{

System.out.println("服务器已经关闭,此程序自动退出!");

break;

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

class SenderMessage implements Runnable

{

private DataOutputStream dout;

public SenderMessage(DataOutputStream dout)

{

this.dout=dout;

}

public void run()

{

String str;

InputStreamReader inf=new InputStreamReader(System.in);

BufferedReader buf=new BufferedReader(inf);

try

{

while (true)

{

str=buf.readLine();

dout.writeUTF(str);

if (str.equals("bye"))

{

System.out.println("客户端自己退出!");

System.exit(1);

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

java 实现 UDP连接的源程序

import java.io.*;

import java.lang.*;

import java.net.*;

public class uclient

{

private DatagramSocket cli;

private DatagramPacket pac;

private byte sb[];

private String sen;

public uclient()

{

Init();

}

public void Init()

{

try

{

//指定端口号,避免与其他应用程序发生冲突

cli=new DatagramSocket(10002);

sb=new byte[1024];

sen="UDP方式发送数据";

sb=sen.getBytes();

pac=new DatagramPacket(sb,sb.length,InetAddress.getByName("localhost"),10005);

cli.send(pac);

}

catch(SocketException se)

{

se.printStackTrace();

}

catch(IOException ie)

{

ie.printStackTrace();

}

}

public static void main(String args[])

{

new uclient();

}

}

接收端数据:

//加以改进代码,可以改变接收方式

import java.io.*;

import java.lang.*;

import java.net.*;

public class userve

{

private DatagramSocket ser;

private DatagramPacket pac;

private byte rb[];

private String rev;

public userve()

{

Init();

}

public void Init()

{

try

{

ser=new DatagramSocket(10005);

rb=new byte[1024];

pac=new DatagramPacket(rb,rb.length);

rev="";

int i=0;

while(i==0)//无数据,则循环

{

ser.receive(pac);

i=pac.getLength();

//接收数据

if(i0)

{

//指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点

rev=new String(rb,0,pac.getLength());

System.out.println(rev);

i=0;//循环接收

}

}

}

catch(Exception e)

{

e.printStackTrace();

}

}

public static void main(String args[])

{

new userve();

}

}

java 中怎么使用UDP?

发送步骤:

使用 DatagramSocket(int port) 建立socket(套间字)服务。

将数据打包到DatagramPacket中去

通过socket服务发送 (send()方法)

关闭资源

import java.io.IOException;  

import java.net.*;  

public class Send {  

public static void main(String[] args)  {  

DatagramSocket ds = null;  //建立套间字udpsocket服务  

try {  

ds = new DatagramSocket(8999);  //实例化套间字,指定自己的port  

} catch (SocketException e) {  

System.out.println("Cannot open port!");  

System.exit(1);   

}  

byte[] buf= "Hello, I am sender!".getBytes();  //数据  

InetAddress destination = null ;  

try {  

destination = InetAddress.getByName("192.168.1.5");  //需要发送的地址  

} catch (UnknownHostException e) {  

System.out.println("Cannot open findhost!");  

System.exit(1);   

}  

DatagramPacket dp =   

new DatagramPacket(buf, buf.length, destination , 10000);    

//打包到DatagramPacket类型中(DatagramSocket的send()方法接受此类,注意10000是接受地址的端口,不同于自己的端口!)  

try {  

ds.send(dp);  //发送数据  

} catch (IOException e) {  

}  

ds.close();  

}  

}

接收步骤:

使用 DatagramSocket(int port) 建立socket(套间字)服务。(我们注意到此服务即可以接收,又可以发送),port指定监视接受端口。

定义一个数据包(DatagramPacket),储存接收到的数据,使用其中的方法提取传送的内容

通过DatagramSocket 的receive方法将接受到的数据存入上面定义的包中

使用DatagramPacket的方法,提取数据。

关闭资源。

import java.net.*;  

public class Rec {  

public static void main(String[] args) throws Exception {  

DatagramSocket ds = new DatagramSocket(10000);  //定义服务,监视端口上面的发送端口,注意不是send本身端口  

byte[] buf = new byte[1024];//接受内容的大小,注意不要溢出  

DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定义一个接收的包  

ds.receive(dp);//将接受内容封装到包中  

String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出内容  

System.out.println(data);//打印内容  

ds.close();//关闭资源     

}  

}

5 java 如何使用udp协议传送文件

//发送端SocketSendFile.java

import java.io.*;

import java.net.*;

public class SocketSendFile {

public static final int SER_PORT=666;

public static final int CLI_PORT=8484;

public static final String SER_IP="192.168.0.35";

public static int bufSize = 1024;

public static byte] mess = new bytebufSize];

//建立Socket引用

public static DatagramSocket dp;

public static void main(String] args) throws Exception {

dp = new DatagramSocket(SER_PORT);

//调用构造函数SocketSendFile,并传递参数args0](所要传输的文件名)

SocketSendFile(args0]);

}

public static void SocketSendFile(String file2) throws Exception {

//定义一个计数器

int pos =0;

//设置写入流

FileInputStream fis = new FileInputStream(file2);

BufferedInputStream bis = new BufferedInputStream(fis);

DataInputStream dis = new DataInputStream(bis);

int i;

do {

i = dis.read();

int j=0;

while (j1024 i != -1) {

messpos++] = (byte) i;

i=dis.read();

j++;

}

dp.send(new DatagramPacket(mess,pos,InetAddress.getByName(SER_IP),CLI_PORT));

}

while (i != -1);

fis.close();

}

}

//接收端SocketReceiveFile.java

import java.net.*;

import java.io.*;

public class SocketReceiveFile {

public static int bufSize=1024;

public static byte] mess=new bytebufSize];

public static DatagramSocket dp;

public static final int SER_PORT=8484;

public static void main(String] args) throws Exception {

dp = new DatagramSocket(SER_PORT);

SocketReceiveFile(args0]);

}

public static void SocketReceiveFile(String file1) throws Exception {

FileOutputStream fos = new FileOutputStream(file1);

BufferedOutputStream bos = new BufferedOutputStream(fos);

DataOutputStream dos = new DataOutputStream(bos);

int i;

DatagramPacket p = new DatagramPacket(mess,mess.length);

while(true) {

boolean j=false;

while (p.getData().length != 0) {

dos.write(p.getData());

dp.receive(p);

j=true;

}

// System.out.println(new String(p.getData(),0,p.getLength()));

if (j)

System.out.println("文件传送完毕.");

}

// fos.close();

}

}


标题名称:udp协议java代码 UDP协议百科
文章路径:http://ybzwz.com/article/hjsdhd.html