JAVA实现服务器和多用户跨平台的通讯
2024年03月11日
随着网络技术的发展,我们的平台越做越大,里面的服务器支架数量也很多。在为我们提供了消防设施的同时,我们发现,由于服务器和平台的操作平台不同,它们之间的通讯是一个麻烦的问题,因为很多现成的通讯软件或者源程序都是针对同一平台的。为了解决这个问题,我们采用JAVA编程,成功的实现了LINUX,WINDOWS NT,WIN98跨平台的通讯。----server程序源码如下:
//server.java import java.io.*;导入sun.net.*;class
server extends NetworkServer//定义服务器类{DataInputStream net_input;//定义数据输出
PrintStream net_output;//定义数据输入public static void main(String args[]){new
server();}public server()//运行服务器功能,并将端口设为1111{try
{startServer(1111);}catch(Exception e){System.out.println(“无法启动
服务器。”);返回;}System.out.println(“等待客户端...”);}public
void serviceRequest()//定义服务应答功能{net_input=new
DataInputStream(clientInput);net_output=系统.out;字符串用户=read_net_input();
System.out.println(user+“已连接!”);while(true){字符串字符串;
if((string=read_net_input())==null)中断;//如果格式输入NULL,中断服务
write_net_output(user+":"+string);}System.out.println(user+"已
断开连接!");}String read_net_input(){try{return net_input.readLine();}
catch(IOException e){return null;}}void write_net_output(String string){
net_output.println(string);}net_output.flush();}}前端程序源代码:
//client.java import java.io.*;导入sun.net.*;class client extends NetworkClient//定义负载类
{DataInputStream net_input;打印流net_output;public static void main(String
args[])//获取服务器IP地址和后台名{if(args.length<2){System.out.println("To run,type:\n");System.out.println("java client<主机><用户名>");}
System.out.println("连接...");尝试{new client(args[0],args[1]);}catch
(Exception e){System.out.println("无法创建NetworkClient。");return;}
}public client(String host,String username)throws IOException//与服务器链接功能
{super(host,1111);if(serverIsOpen()){System.out.println("已连接到
服务器。");net_input=new DataInputStream(System.in);net_output=serverOutput;
net_output.println(用户名);chat();}else System.out.println("Error:Could not
connect to server.");}void chat()//定义信息传递函数,当输入EXIT时,中断链接
{String string;System.out.println("键入EXIT退出");while(true){
string=read_net_input();if(string.equalsIgnoreCase("EXIT"))break;
write_net_output(string);}System.out.println(“正在断开连接...”);
close_server();System.out.println(“完成!”);}String read_net_input(){try
{return net_input.
write_net_output(String string){net_output.println(string);net_output.flush();}void
close_server(){try{closeServer();}catch(Exception e){System.out.println("无法
关闭服务器。");}}}
----
把两个源程序输入后,在任一操作平台上运行javac server.java和javac client.java,分别把它们编译成class文件。由于java的class文件的跨平台性,只需在服务器上运行相应的java解析程序执行server,在客户端机上运行相应的java解析程序执行客户端,可以实现仓库和服务器之间的通讯了,而且服务器允许多用户接入。以文学学校的邻居为例,源程序在WIN98平台上用JDK 1.1.5编译成功,把server.class→到一台LINUX服务器上,执行java服务器(该服务器已经安装了JAVA的RPM包),在其他WINNT平台→加入client.class,运行jview client 192.168.100.1 NT(192.168).100.1是LINUX服务器的IP地址),可以实现跨平台通讯了。