Yesky首页| 产品报价| 行情| 手机 | 数码 | 笔记本 | 台式机 | DIY硬件 | 外设 | 网络 | 数字家庭 | 评测 | 软件 | e时代 | 游戏 | 图片 | 壁纸 | 群乐 | 社区 | 博客 | 下载
您现在的位置: 天极网 > 开发频道 > Java Socket编程
全文

Java Socket编程

2003-12-02 18:43 作者: 出处: matrix 责任编辑:方舟


  数据报服务器

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

  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);

  简单的WEB服务器

  一个简单的WEB服务器将由列表9.2这样构建.当然,还必须要对方法和回应事件进行改进.简单的服务器不会分析和存储请求头.新的WEB服务器将分析和存储请求,为以后的处理作准备.为了达到这个目的,你必须有一个包含HTTP请求的类.

  HTTPrequest类

  列表9.5列出了一个完整的HTTPrequest类.这个类必须包括一个请求头所需的所有信息.

  列表9.5.HTTPrequest类.

import java.io.*;
import java.util.*;
import java.net.*;
import Namevalue;
/**
* 这个类有一个HTTP请求的所有信息
*/
public class HTTPrequest
{
public String version;
public String method;
public String file;
public Socket clientSocket;
public DataInputStream inbound;
public Namevalue headerpairs[];
/**
* 建立一个这个类的实例
*/
public HTTPrequest()
{
version = null;
method = null;
file = null;
clientSocket = null;
inbound = null;
inbound = null;
headerpairs = new Namevalue[0];
}
/**
* 加入一个名称/值对到核心数组
*/
public void addNamevalue(String name, String value)
{
try
{
Namevalue temp[] = new Namevalue[ headerpairs.length + 1 ];
System.arraycopy(headerpairs, 0, temp, 0, headerpairs.length);
temp[ headerpairs.length ] = new Namevalue(name, value);
headerpairs = temp;
}
catch (NullPointerException npe)
{
System.out.println("NullPointerException while adding name-value:
" + npe);
}
}
/**
* 以字符串的形式归还这个类
*/
public String toString()
{
String s = method + " " + file + " " + version + " ";
for (int x = 0; x < headerpairs.length; x++ )
s += headerpairs[x] + " ";
return s;
}
}

  Namevalue类简单地存储了两个字符串:name 和 value.当一个新的对要被加入时,一个新的数组将被分配.新的数组接受了旧的数组和新的成员.旧的数组然后被一个新建的对象覆盖了。
共6页。 9 1 2 3 4 5 6
共6页。 9 1 2 3 4 5 6
网友关注
最新上市
编辑推荐
文章阅读排行
周排行
月排行
欢迎订阅天极网RSS聚合资讯:http://www.yesky.com/index.xml