您好,欢迎访问一九零五行业门户网

Java之网络编程实例详解

一、套接字 socket
网络驱动程序提供给应用程序编程的接口和一种机制,可以比喻成一个港口码头 应用程序只要把货放在这,就算完成了货物的运送。它在应用程序中创建,通过一种绑定机制与驱动程序建立关系,告诉自已对应的ip 和 port。
socket是 java 中网络编程的类 , 位于java.net包中。
---- datagramsocket  //用于udp通迅
---- serversocket //用于tcp通讯,用于服务端
---- socket //用于tcp通讯的服务端和客户端
二、udp 网络程序
inetaddress 类  表示互联协议(ip)地址
//static inetaddress getlocalhost()     throws unknownhostexception 返回本地主机        
//static inetaddress getbyname(string host)  在给定主机名的情况下确定主机的 ip 地址。 主机名可以是机器名
                                                                                         //(如 java.sun.com),也可以是其 ip 地址的文本表示形式
//static inetaddress[] getallbyname(string host) 根据主机名返回其 ip 地址所组成的数组。
static void ipdemo() throws unknownhostexception{                 inetaddress netaddr=inetaddress.getlocalhost();                //取得本地电脑的一些信息system.out.println(netaddr.tostring());                   system.out.println(netaddr.gethostaddress());                 system.out.println(netaddr.gethostname()); //取得其他电脑的信息inetaddress netaddr2=inetaddress.getbyname(dell-pc);  //这里也可以传ip地址system.out.println(netaddr2.gethostaddress());  //169.254.170.71system.out.println(netaddr2.gethostname()); //dell-pc                //取得百度的地址inetaddress []  iplist=inetaddress.getallbyname(www.baidu.com);for(inetaddress addr:iplist){                     system.out.println(addr.tostring());                  }             }
三、udp发送和接收  datagramsocket , datagrampacket
//例一 最简的发送和接收
发送端==要导java.net包
通过udp的方式把数据发出去:
1) 建立udpsocket服务
2) 提供数据,将数据封装到数据包中  datagrampacket (byte[] buf, int length, inetaddress address, int port) //构造函数有多个
3) 通过socket服务,发送数据
4) 关闭资源
import java.net.*;class sender4{//datagrampacket (byte[] buf, int length, inetaddress address, int port) public static void main(string [] args) throws exception                                 {                                      byte [] buff=hello cat.getbytes();                                          datagramsocket socket=new datagramsocket();                                         datagrampacket packet=new datagrampacket(buff,buff.length,inetaddress.getbyname(192.168.0.103),8888);                                         socket.send(packet);                                         socket.close();                                         system.out.println(ok);                                 }                             }
--接收端
1) 创建socket服务,指定在某个端口上监听
2) 创建一个用于接收数据的  datagrampacket
3) 从包中取出数据
4) 关闭资源
import java.net.*;class receive4                             {public static void main(string [] args) throws exception                                 {                                 datagramsocket socket=new datagramsocket(8888); //别忘了端口号byte[] buff=new byte[1024] ;                                     datagrampacket packet=new datagrampacket(buff,buff.length);                                                                          socket.receive(packet);                                                                          string senderip=packet.getaddress().gethostaddress();                                     string senderdata=new string(packet.getdata(),0,packet.getlength());int senderport=packet.getport();                                     system.out.println(senderip+---+senderdata+---+senderport);                                                                          socket.close();                                 }                             }
//例二,循环的发送和接收
import java.net.*;import java.io.*;class newsender{public static void main(string [] args) throws exception                         {                                 system.out.println(发送端启动了);                                 datagramsocket socket=new datagramsocket();                                                                  bufferedreader br=new bufferedreader(new inputstreamreader(system.in)); //包装键盘输入流string str=null;while((str=br.readline())!=null){byte [] buff=str.getbytes();                                         datagrampacket packet=new datagrampacket(buff,buff.length,inetaddress.getbyname(127.0.0.1),9000);                                         socket.send(packet);                                 }                                                                  br.close();                                 socket.close();                                     }                         }
import java.net.*;class newreceiver{public static void main(string [] args) throws exception                     {                             datagramsocket socket=new datagramsocket(9000);                             system.out.println(接收端启动了);                            while(true){                                    byte [] buff=new byte[1024] ;                                    datagrampacket packet=new datagrampacket(buff,buff.length);                                   socket.receive(packet);                                                                      string senderip=packet.getaddress().gethostaddress();                                  int sendport=packet.getport();                                   string msg= new string(packet.getdata(),0,packet.getlength());                                                                      system.out.println(senderip+:+sendport+:+msg);                                 }                     }                 }
例三:多线程聊天室程序
class chat         {public static void main(string [] args)                 {new thread(new sendthread()).start(); new thread(new receivethread()).start();                  }         }
//发送端import java.io.*;import java.net.*;class sendthread implements runnable         {              private datagramsocket socket;public void run()                 {try{                         socket=new datagramsocket();                         bufferedreader br=new bufferedreader(new inputstreamreader(system.in));                         string msg=null;while((msg=br.readline())!=null){byte[] buff=msg.getbytes();                             datagrampacket packet=new datagrampacket(buff,buff.length,inetaddress.getbyname(127.0.0.1),10000);                             socket.send(packet);                         }                                                  socket.close();                         br.close();                     }catch(exception ex){                         ex.printstacktrace();                     }                 }         }
//接收端import java.net.*;class receivethread implements runnable{    private datagramsocket socket;                    public void run(){try{                         socket=new datagramsocket(10000);while(true){byte [] buff=new byte[1024];                             datagrampacket packet=new datagrampacket(buff,buff.length);                             socket.receive(packet);                                                          string senderip=packet.getaddress().gethostaddress();int senderport=packet.getport();                             string msg=new string(packet.getdata(),0,packet.getlength());                                                          system.out.println(senderip+:+senderport+:+msg);                                  }                     }catch(exception ex)                     {                         system.out.println(ex.getmessage());                     }                 }             }
以上就是java之网络编程实例详解的详细内容。
其它类似信息

推荐信息