Java远程配置需要注意很多的问题,尤其是在代码编写上面更是十分的重要。下面我们就来详细的看看在关键代码的编写上有什么是需要我们最需要重视的。希望大家有所收获。
1,Socket ,ServerSocket:
Socket 位于java.net.包中,这是一个对于网络通信来说及其重要的类,无论是那种语言,都会有Socket类的定应用或许,存在的差异也仅仅是在表示和组织上有所不同,Socket中文称它为套接字,javaAPI中可以查看相应的介绍 一个ServerSocket构造一对通信套接字方法如下
- ServerSocket sr=new ServerSocket(port);
- Socket sc=new Socket("ip",port);
其中ServerSocket 的accpet方法十分重要,当一个服务套接字建立之后它一直阻塞等待一个套接字的请求,直到建立连接。
部分计算机网络的书籍对套接字有这样的定义 套接字 =ip+port;一个套接字是由一个由一个ip地址和一个端口组成的,在网络通信中的底层实现也的确如此,要一个进程通信就必须为之制定工作端口,在连接端口之后才能在该端口上通信.
2, InputStream , OutputStream
当一个套接字连接成功后就可以获得基于这个套接字的输入输出流,一切数据的发送和接受都离不开输出输入流,我们可以通过流封装的方法选择你要输入或者输出的数据类型,
请看如下例子:
这是一个完整服务器端的例子请仔细阅读注释
- //Server.java
- import java.net.*;
- import java.io.*;
- public class Server {
- public static void main(String args[])
- {
- ServerSocket server=null;//定义服务套接字
- Socket you=null;
- String s=null;
- DataOutputStream out=null;//定义流
- DataInputStream in=null;
- try{
- server=new ServerSocket(4331);/*在这里建立服务器套接字,
服务套接字的构造方法只需要有服务端口就行,这个道理很简单*/- }catch(Exception e){System.out.println(e.getMessage());}
//捕捉异常- try{
- System.out.println("wait.....");
- you=server.accept();//在这里阻塞等待客户的介入
- out=new DataOutputStream(you.getOutputStream());//取得输出流
- in=new DataInputStream(you.getInputStream());//取得输出流
- while(true)//循环读
- {
- s=in.readUTF();
- int m=Integer.parseInt(s);
- out.writeUTF("Hello i am server!");//发送信息
- out.writeUTF("X 2:"+s);
- System.out.println("Server receive :"+s);
- Thread.sleep(300);//f防止组赛,没有这一个语句或占用很多cpu和内存
- }
- }catch(Exception e){System.out.println("Client leave!");}
- }
- }
上面是一个简单的服务器端程序 显示了如何实现套接字的服务器构建,下面是一个Java远程配置的客户端
- import java.io.*;
- import java.net.*;
- public class Client {
- public static void main(String args[])
- {
- String s=null;
- Socket mysocket;//创建客户端套接字
- DataInputStream in=null;
- DataOutputStream out=null;
- try{
- mysocket=new Socket("127.0.0.1",4331);/
*注意实例化的构造方法与服务器有什么不同*/- System.out.println("localport:"+mysocket.getLocalPort());
- System.out.println("localAddress:"+mysocket.
getLocalAddress());- System.out.println("localSocketAddress:"+mysocket.
getLocalSocketAddress());- System.out.println("Chanel:"+mysocket.getChannel());
- // 上面的代码显示具体的通信地址端口
- in=new DataInputStream(mysocket.getInputStream());
- out=new DataOutputStream(mysocket.getOutputStream());
- for(int k=1;k<100;kk=k+2)//循环写入内容
- {
- out.writeUTF(""+k);
- s=in.readUTF();
- System.out.println("客户端接受的数据!:"+s);
- Thread.sleep(500);
- }
- }catch(Exception e){
- System.out.println(e.getMessage());
- }
- }
- }
上面两个文件保存后放在一个文件价下运行Java远程配置就可以实现通信,建议读者使用集成开发环境进行测试。
【编辑推荐】