想不到Java也能让我基于TCP/IP编写程序,还是如此简单!

来源:互联网 发布:网络安全技术期末考试 编辑:程序博客网 时间:2024/06/07 06:57

这是我的客户端园程序

//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程序发送的数据。

原创粉丝点击