当前位置:  技术问答>java相关

哪位大虾有数据报Socket客户端例子的java源码?急……

    来源: 互联网  发布时间:2015-05-01

    本文导语:  只要一个客户端的就可,能否发信息及随时接收信息即可。 高分求救 | UPDClient端: import java.net.*; import java.io.*; /**  * This class allows you to send and receive Strings and byte arrays via UDP  * w...

只要一个客户端的就可,能否发信息及随时接收信息即可。
高分求救

|
UPDClient端:
import java.net.*;
import java.io.*;

/**
 * This class allows you to send and receive Strings and byte arrays via UDP
 * without concerning yourself with DatagramPackets and DatagramSockets.
 * @version 1.0 of June 1, 1996
 * @author Elliotte Rusty Harold
 */
public class UDPClient {

  InetAddress ia;
  int port;
  DatagramSocket ds;

  /**
   * Creates a new UDPClient.
   * @param ia The InetAddress of the remote host to which data will be sent
   * @param port The port on the remote host to which data will be sent
   * @throws SocketException
   */
   public UDPClient(InetAddress ia, int port) throws SocketException {

    this.ia = ia;
    this.port = port;
    ds = new DatagramSocket();

  }

  public UDPClient(String hostname, int port) throws UnknownHostException, SocketException {

    this(InetAddress.getByName(hostname), port);

  }

  /**
   * This method sends data to the remote host via UDP. If the byte is longer than
   * the maximum reliable length of a UDP Datagram (64900) bytes then an
   * IOException is thrown
   * @param buffer A byte array containing the data to be sent
   * @throws IOException
   */
  public void send(byte[] buffer) throws IOException {

    if (buffer.length > 64900) throw new IOException();
    DatagramPacket dp = new DatagramPacket(buffer, buffer.length, ia, port);
    ds.send(dp);
    System.out.println("send(byte[] buffer) ");

  }

  /**
   *
   * This method sends an ISO-Latin-1 string to the remote host via UDP.
   * The string will be truncated to ISO-Latin-1 even if it's Unicode.
   * @param s The string to be sent
   * @throws IOException
   */
  public void send(String s) throws IOException
  {
    System.out.println("send(String s) throws IOException ");
    byte[] data = new byte[s.length()];
    s.getBytes(0, s.length(), data, 0);
    send(data);

  }

  /**
   * This method sends an empty datagram to the remote host via UDP.
   * @throws IOException
   */
  public void send() throws IOException {

    byte[] b = new byte[1];
    send(b);

  }

  /**
   * This method blocks until a UDP Datagram is received from the host with which
   * this UDPClient communicates. This can be an indefinite amount of time if
   * the host is unreachable so calls to this method should be placed in a separate
   * thread from the main program.
   * @return the data received as a byte array
   * @throws IOException
   */
  public synchronized byte[] receive() throws IOException {

    byte[] buffer = new byte[65507];
    DatagramPacket incoming = new DatagramPacket(buffer, buffer.length);
    ds.receive(incoming);
    // a client should only receive data from the host to
    while ( !incoming.getAddress().equals(ia)) {
      ds.receive(incoming);
    }
    return incoming.getData();

  }

  /**
   * This method blocks until a UDP Datagram is received from the host with which
   * this UDPClient communicates. This can be an indefinite amount of time if
   * the host is unreachable so calls to this method should be placed in a separate
   * thread from the main program. When data is received it is
   * converted into an ISO-latin-1 String and returned.
   * @return the data received as a byte array
   * @throws IOException
   */
  public synchronized String receiveString() throws IOException {

    byte[] data = receive();
    return new String(data, 0, 0, data.length);

  }

  /**
   * @return the port which this object sends data to
   */
  public int getPort() {

    return port;

  }

  /**
   * @return the port which this client is bound to
   */
  public int getLocalPort() {

    return ds.getLocalPort();

  }

  /**
   * @return the InetAddress which this client sends data to
   */
  public InetAddress getAddress() {

    return ia;

  }

  /**
   * @return a String showning the remote host and port which this client sends data to
   */
  public String toString() {

    return ia + ":" + port;

  }

   public static void main(String args[])
    {
    try
    {
       InetAddress ia = InetAddress.getByName("ganja.saili.com");
       System.out.println("ia:" + ia.getHostAddress() +":"+ia.getHostName());
       UDPClient uu = new UDPClient(ia,30000);
       uu.send(args[0]);
       }
       catch(Exception e)
       {
       }
    }

}

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位大虾,小弟有一事不明,请大虾赐教!
  • 在solaris下如何卸载wu-ftpd???????????????????????谢谢大虾!!!!!!!!!!
  • 请大虾们谈谈linux和unix的异同吧
  • 请大虾,详细介绍一下JavaBean的写法,和调用过程!
  • 对LDAP有研究的大虾请进,见者有分
  • 超级新手菜鸟请问各位大虾!
  • 各位大虾,一个初学者该怎样开始学习java?
  • 请问各位大虾,什么地方有Jsp学习资料?
  • 哪位大虾知道weblogic与websphere的差别?
  • 大虾救命!APACHE没有理睬JSP?!!!
  • 请问各位大虾,如何把一个String赋值给一个Char[]??
  • 大虾救命啊!!!50分!!!
  • 哪位大虾指点一下哪里有weblogic下载啊???
  • 请问各位unix大虾,哪有免费的unix下载?
  • 初学者求救!!哪位大虾给点源代码?
  • 在下初学java,请各位大虾推荐几个java学习网站吧!
  • 请各位大虾介绍几个好一点的linux论坛,谢谢!
  • 大虾救命,dos下面怎么输入中文?
  • 请问大虾们,如何学习linux?
  • 编程语言 iis7站长之家


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3