| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 |
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> JAVA文章 >> java socket >> 文章正文
Java Socket编程之四        【字体:
Java Socket编程之四
作者:-    文章来源:-    点击数:    更新时间:2006-7-24

重复和并发服务器

所有的这些调用都可以掷出一个UnknownHostException违例.如果一台计算机没有连接上DNS服务器,或者主机的确没有找到,这个违例就会被掷出.如果一台计算机没有一个激活的TCP/IP配置,getLocalHost()也为失败并掷出一个违例.

一旦一个地址被确定了,数据报就可以被送出了.下面的程序传输了一个字符串给目的socket:

String toSend = "This is the data to send!");
byte[] sendbuf = new byte[ toSend.length() ];
toSend.getBytes( 0, toSend.length(), sendbuf, 0 );
DatagramPacket sendPacket = new DatagramPacket( sendbuf, sendbuf.length,
addr, port);
clientSocket.send( sendPacket );

首先,字符串必须被转换成一个字节数组.然后,一个新的DatagramPacket实例必须被建立.注意构建器的最后两个参数.因为要发送一个包,所以地址和端口必须被给定.一个applet可能可以知道它的服务器的地址,但是服务器如何知道它的客户机的地址呢.当任何一个包被收到后,返回的地址和端口会被解压出来,并通过getAddress()和getPort()方法得到.这就是一个服务器如何回应一个客户端的包:

DatagramPacket sendPacket = new DatagramPacket( sendbuf, sendbuf.length,
recvPacket.getAddress(), recvPacket.getPort() );
serverSocket.send( sendPacket );

不像面向连接的操作,数据报服务器服务器其实比数据报客户端更简单:

数据报服务器

一个数据报服务器的基本步骤:

1.在一个指定的端口上建立一个数据报socket.

2.用receive方法等待进来的包.

3.用特定的协议来回应收到的包.

4.回到第二步或继续第二步.

5.关闭数据报socket.

列表9.3演示了一人简单的数据报回应服务器.它将回应它收到的包.

列表9.3.一个简单的数据报回应服务器

import java.io.*;
import java.net.*;
public class SimpleDatagramServer
{
public static void main(String[] args)
{
DatagramSocket socket = null;
DatagramPacket recvPacket, sendPacket;
try
{
socket = new DatagramSocket(4545);
while (socket != null)
{
recvPacket= new DatagramPacket(new byte[512], 512);
socket.receive(recvPacket);
sendPacket = new DatagramPacket(
recvPacket.getData(), recvPacket.getLength(),
recvPacket.getAddress(), recvPacket.getPort() );
socket.send( sendPacket );
}
}
catch (SocketException se)
{
System.out.println("Error in SimpleDatagramServer: " + se);
}
catch (IOException ioe)
{
System.out.println("Error in SimpleDatagramServer: " + ioe);







[1]

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • HTTP 1.1状态代码及其含义

  • java开发的邮件发送程序

  • 从socket中读取数据时使用超…

  • 对等计算实践:基于 IP 多播…

  • 穿透Socks5 代理的UDP编程

  • 使用Java控制UDP协议

  • 如何用Java实现网络中国象棋…

  • 一个Socket服务器样板程序

  • Java Socket编程

  • Java Socket编程之五

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |