分别编写基于TCP和UDP协议的客户 和 服务器 程序,实现如下功能总结java中关于网络编程的基本思路。
1)服务器端提供服务:显示服务器的日期和时间并能显示所相应的客户端的ip地 址、时间和日期 (要求:多线程)
2)客户端 通过输入服务器的地址和端口参数 可以显示 服务器的日期和时间网络课的一道作业,因为我没学过java,所以对这个题一点思路也没有,有没有高手给点思路,譬如系统时间应该怎样显示等等,很着急,谢谢了
1)服务器端提供服务:显示服务器的日期和时间并能显示所相应的客户端的ip地 址、时间和日期 (要求:多线程)
2)客户端 通过输入服务器的地址和端口参数 可以显示 服务器的日期和时间网络课的一道作业,因为我没学过java,所以对这个题一点思路也没有,有没有高手给点思路,譬如系统时间应该怎样显示等等,很着急,谢谢了
服务器端:
import java.io.*;
import java.net.*;
import java.util.*;
import java.text.DateFormat;public class TimeServer{ protected static DatagramSocket socket = null;
public static void main(String[] args)
{
while(true){
try{
socket = new DatagramSocket(5555);
byte[] buf = new byte[128];
DatagramPacket packet= new DatagramPacket(buf,buf.length);
socket.receive(packet);
String dString = null;
Date d = new Date();
dString = DateFormat.getDateTimeInstance().format(d);
buf = dString.getBytes();
InetAddress address = packet.getAddress();
int port = packet.getPort();
packet = new DatagramPacket(buf,buf.length,address,port);
socket.send(packet);
System.out.println("Requiring from: "+address.getHostAddress());
}
catch(IOException e){e.printStackTrace();}finally{socket.close();}
}
}
}
客户端:
import java.io.*;
import java.net.*;
import java.util.*;public class TimeClient
{
public static void main(String[] args){
if (args.length!=1)
{
System.out.println("Usage:java TimeClient<hostname>");
return;
}
try{
DatagramSocket socket= new DatagramSocket();
byte[] buf = new byte[128];
InetAddress address = InetAddress.getByName(args[0]);
DatagramPacket packet = new DatagramPacket(buf,buf.length,address,5555);
socket.send(packet);
packet = new DatagramPacket(buf,buf.length);
socket.receive(packet); String received = new String(packet.getData());
System.out.println("Net time is :"+received.trim());
socket.close();
}catch(IOException e){e.printStackTrace();}
}
}
import java.net.*;
import java.io.*;
import java.util.*;
import java.text.DateFormat;public class TimeServer{
public static void main(String[] args){
ServerSocket s=null;
Socket s1;
Date d = new Date();
String sendString=DateFormat.getDateTimeInstance().format(d);; OutputStream s1out;
DataOutputStream dos; try{
s=new ServerSocket(5555);
}catch(IOException e){} while(true){
try{
System.out.println("等待连接....");
s1=s.accept();
InetAddress address= s1.getInetAddress();
System.out.println("发现来自"+address.getHostAddress()+"的连接,发送消息....");
s1out=s1.getOutputStream();
dos =new DataOutputStream(s1out);
dos.writeUTF(sendString);
System.out.println("发送成功");
s1out.close();
s1.close();
}catch(IOException e){} }
}
}
客户端:
import java.net.*;
import java.io.*;
public class TimeClient{
public static void main(String[] args) throws IOException{
int c;
Socket s1;
InputStream s1In;
DataInputStream dis;
InetAddress address = InetAddress.getByName(args[0]);
s1= new Socket(address,5555);
s1In=s1.getInputStream();
dis=new DataInputStream(s1In);
String st=new String(dis.readUTF());
System.out.println("返回服务器当前时间为:"+st);
s1In.close();
s1.close();
}
}