这是我的客户端园程序
//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);
}
}
}
下面是服务端的源代码
//返回连接时间的服务器程序 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);
}
}
}
这两个程序明显是在以广播形式传送数据,只要在局域网里面以任何一台主机都运行Readnet都能接收到Netclock程序发送的数据。
本文提供了一个简单的客户端和服务端程序示例,演示了如何通过网络进行数据传输。客户端Readnet能够接收来自服务端Netclock的数据,并显示在屏幕上。服务端Netclock则在指定端口等待连接请求,一旦接收到请求便返回当前时间。

被折叠的 条评论
为什么被折叠?



