如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
www.027hpedu.comwww.whhpit.comJava中的TCP/UDP网络通信编程127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问.端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户的普通网络应用程序应该使用1024以上的端口.网络应用中基本上都是TCP(TransmissionControlProtocol传输控制协议)和UDP(UserDatagramProtocol用户数据报协议),TCP是面向连接的通信协议,UDP是无连接的通信协议.Socket连接套接字,Java分别为TCP和UDP提供了相应的类,TCP是java.net.ServerSocket(用于服务器端)和java.net.Socket(用于客户端);UDP是java.net.DatagramSocket.1,Java编写UDP网络程序1.1,DatagramSocketDatagramSocket有如下构造方法:1,DatagramSocket():构造数据报套接字并将其绑定到本地主机上任何可用的端口。2,DatagramSocket(intport):创建数据报套接字并将其绑定到本地主机上的指定端口。3,DatagramSocket(intport,InetAddressladdr):创建数据报套接字,将其绑定到指定的本地地址。即指定网卡发送和接收数据.如果在创建DatagramSocket对象时,没有指定网卡的IP地址,在发送数据时,底层驱动程序会自动选择一块网卡去发送,在接收数据时,会接收所有的网卡收到的与端口一致的数据.发送信息时,可以不指定端口号,接收信息时,要指定端口号,因为要接收指定的数据.发送数据使用DatagramSocket.send(DatagramPacketp)方法,接收数据使用DatagramSocket.receive(DatagramPacketp)方法.1.2,DatagramPacketDatagramPacket类有如下构造方法:1,DatagramPacket(byte[]buf,intlength):构造DatagramPacket,用来接收长度为length的数据包。2,DatagramPacket(byte[]buf,intlength,InetAddressaddress,intport):构造数据报包,用来将长度为length的包发送到指定主机上的指定端口号。接收数据时使用第一次构造方法,发送数据时使用第二种构造方法.1.3,InetAddressJava中对IP地址进行包装的类,DatagramPacket.getAddress()可以获取发送或接收方的IP地址.DatagramPacket.getPort()可以获取发送或接收方的端口.1.4,UDP程序例子发送程序:importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;publicclassUdpSend{publicstaticvoidmain(String[]args)throwsException{DatagramSocketds=newDatagramSocket();Stringstr="hello,world!";DatagramPacketdp=newDatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("192.168.0.105"),3000);ds.send(dp);ds.close();//关闭连接}}接收程序:importjava.net.DatagramPacket;importjava.net.DatagramSocket;publicclassUdpRecv{publicstaticvoidmain(String[]args)throwsException{DatagramSocketds=newDatagramSocket(3000);byte[]buf=newbyte[1024];DatagramPacketdp=newDatagramPacket(buf,buf.length);ds.receive(dp);Stringstr=newString(dp.getData(),0,dp.getLength());System.out.println(str);System.out.println("IP:"+dp.get