这是我的客户端园程序
//
Readnet.java
// 接收网络服务器发来的数据,并将其原样输出到屏幕上
// 使用方法:java Readnet DNS端口号
import java.io.InputStream;
import java.net.Socket;
// Class Readnet
public class Readnet
... {
/** *//**
* @param args
*/
public static void main(String[] args)
...{
byte[] buff = new byte[1024]; //Define an array
Socket readsocket = null; //The socket of connected sever
InputStream instr = null; //Object of read data
boolean cont = true;
//BufferedReader buf = new BufferedReader;
//对于指定的端口,生成socket
//生成instr对象,准备读取数据
try
...{
String HostName = "WangBing"; //用于指定要连接的主机用户名,可再主机上右击我的电脑,计算机名即HostName
String PortName = "6000"; //必须要指定为和服务器发送数据端口一致,这样才能访问服务器端口接收数据
readsocket= new Socket(HostName,Integer.parseInt(PortName));
//通过HostName,PortName创建套接字,估计也就是象主机发送连接请求
instr = readsocket.getInputStream();
}
catch(Exception e)
...{
System.err.println("File not find!");
System.exit(1);
}
//数据读取未完成时执行如下循环
while(cont)
...{
try
...{
//读取数据
int n = instr.read(buff);
//写入System.out中
System.out.write(buff,0,n);
}
catch(Exception e)
...{
//数据读取完毕时结束程序
cont = false;
//e.printStackTrace();
}
}
//断开连接
try
...{
instr.close();
}
catch(Exception e)
...{
//网络关闭失败
System.err.println("网络错误");
System.exit(1);
}
}
}
// 接收网络服务器发来的数据,并将其原样输出到屏幕上
// 使用方法:java Readnet DNS端口号
import java.io.InputStream;
import java.net.Socket;
// Class Readnet
public class Readnet
... {
/** *//**
* @param args
*/
public static void main(String[] args)
...{
byte[] buff = new byte[1024]; //Define an array
Socket readsocket = null; //The socket of connected sever
InputStream instr = null; //Object of read data
boolean cont = true;
//BufferedReader buf = new BufferedReader;
//对于指定的端口,生成socket
//生成instr对象,准备读取数据
try
...{
String HostName = "WangBing"; //用于指定要连接的主机用户名,可再主机上右击我的电脑,计算机名即HostName
String PortName = "6000"; //必须要指定为和服务器发送数据端口一致,这样才能访问服务器端口接收数据
readsocket= new Socket(HostName,Integer.parseInt(PortName));
//通过HostName,PortName创建套接字,估计也就是象主机发送连接请求
instr = readsocket.getInputStream();
}
catch(Exception e)
...{
System.err.println("File not find!");
System.exit(1);
}
//数据读取未完成时执行如下循环
while(cont)
...{
try
...{
//读取数据
int n = instr.read(buff);
//写入System.out中
System.out.write(buff,0,n);
}
catch(Exception e)
...{
//数据读取完毕时结束程序
cont = false;
//e.printStackTrace();
}
}
//断开连接
try
...{
instr.close();
}
catch(Exception e)
...{
//网络关闭失败
System.err.println("网络错误");
System.exit(1);
}
}
}
下面是服务端的源代码
//
返回连接时间的服务器程序 Netclock.java
// 此程序端口号为6000的服务器程序
// 收到客户端连接请求后将返回连接时间
// 安<Ctrl>+C可终止程序的运行
// 使用方法:java Netclock
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class Netclock
... {
/** *//**
* @param args
*/
public static void main(String[] args)
...{
ServerSocket servsock = null; //服务器Socket(套接字)
Socket sock; //读写Socket对象
OutputStream out; //输出流
String outstr; //存放输出数据的字符串
int i; //输出循环控制变量
Date d; //日期对象
try
...{
//生成服务器socket
servsock = new ServerSocket(6000,300);
//服务器处理循环
while(true)
...{
sock = servsock.accept(); //接收连接
System.out.println("连接已经受理!");
//生成输出数据
d = new Date();
outstr = " "+"Hello,can you receive me?"
+" "+d.toString()+" "
+"Yes you have received completely!"+" ";
//输出数据
out = sock.getOutputStream();
//发送数据
System.out.println("发送数据""+outstr+"" 完毕!");
for(int j=0; j<outstr.length();j++)
out.write((int)outstr.charAt(j));
out.write(' ');
//连接结束
sock.close();
}
}
catch(Exception e)
...{
System.exit(1);
}
}
}
// 此程序端口号为6000的服务器程序
// 收到客户端连接请求后将返回连接时间
// 安<Ctrl>+C可终止程序的运行
// 使用方法:java Netclock
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
public class Netclock
... {
/** *//**
* @param args
*/
public static void main(String[] args)
...{
ServerSocket servsock = null; //服务器Socket(套接字)
Socket sock; //读写Socket对象
OutputStream out; //输出流
String outstr; //存放输出数据的字符串
int i; //输出循环控制变量
Date d; //日期对象
try
...{
//生成服务器socket
servsock = new ServerSocket(6000,300);
//服务器处理循环
while(true)
...{
sock = servsock.accept(); //接收连接
System.out.println("连接已经受理!");
//生成输出数据
d = new Date();
outstr = " "+"Hello,can you receive me?"
+" "+d.toString()+" "
+"Yes you have received completely!"+" ";
//输出数据
out = sock.getOutputStream();
//发送数据
System.out.println("发送数据""+outstr+"" 完毕!");
for(int j=0; j<outstr.length();j++)
out.write((int)outstr.charAt(j));
out.write(' ');
//连接结束
sock.close();
}
}
catch(Exception e)
...{
System.exit(1);
}
}
}
这两个程序明显是在以广播形式传送数据,只要在局域网里面以任何一台主机都运行Readnet都能接收到Netclock程序发送的数据。