java网络编程学习详解和总结!
2017-08-12 17:12
676 查看
网络:网络编程三要素:1、IP地址:唯一标识网络上的每一台计算机两台计算机之间通信的必备有素2、端口号:计算机中应用的标号(代表一个应用程序)0-1024系统使用或保留端口,有效端口0-655363、通信协议:通信的规则TCP,UDPIP地址所对应的对象->InetAddress传输协议:1、UDP相当于发短信(有字数限制),不需要建立连接,数据包的大小限制在64K内,效率较高,不安全,容易丢包。2、TCP相当于打电话,需要建立连接,效率相对比较低,数据传输安全,三次握手完成。InetAddress类:
public class InetAddressDemo { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub InetAddress ia=InetAddress.getByName("www.baidu.com"); System.out.println(ia.getHostAddress()); //获取ip System.out.println(ia.getHostName()); //获取主机名 InetAddress l = InetAddress.getLocalHost(); //获取本机的IP信息 System.out.println(l); InetAddress[] ad = InetAddress.getAllByName("T"); //根据主机名返回所有IP地址 for(InetAddress s:ad){ System.out.println(s); } } }基于TCP协议的Socket编程:客户端:
public class Client { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub Socket s=new Socket("127.0.0.1",8800); BufferedReader line=new BufferedReader(new InputStreamReader(System.in)); OutputStream os = s.getOutputStream(); String str=null; while((str=line.readLine())!=null){ if(str.equals("exit")){ break; } os.write(str.getBytes()); } s.shutdownOutput(); s.shutdownInput(); os.close(); line.close(); s.close(); } }服务器端:
public class Srever { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub // 创建一个服务器端的套接字 ServerSocket ss=new ServerSocket(8800); Socket s = ss.accept(); InputStream is = s.getInputStream(); byte b[]=new byte[1024]; while(is.read(b)!=-1){ System.out.println(new String(b)); } s.shutdownInput(); } }UDP通信:Datagram(数据报):是分组交换的一种形式,就是把所传递的数据分段打成“包”,再传送出去。与传统的“连接型”分组交换不同,它属于“无连接型”,是把打包成的每个“包”(分组)都作为一个“独立的报文”传送出去,所以叫做“数据报”。在开始通信之前不需要先连接好一条线路,各个数据报不一定都通过同一条路径传输。 UDP通讯服务器端:
public class UDP2 {public static void main(String[] args) {try {DatagramSocket ds=new DatagramSocket(4321);byte[] data=new byte[1024];//定义接受地缓冲区DatagramPacket dp=new DatagramPacket(data,data.length);ds.receive(dp);//接收数据包//以下是将接收到的字节数组转换为字符串并输出显示String mes=new String(dp.getData(),0,dp.getLength());System.out.println(mes);} catch (Exception e) {e.printStackTrace();}}}UDP通讯客户端
public class UDP1 {public static void main(String[] args) {try {DatagramSocket ds=new Datagr4000amSocket(1234);String mes="你好,UDP2.";byte[] data=mes.getBytes();//将字符串转换为byte数组InetAddress ip=InetAddress.getByName("127.0.0.1");DatagramPacket dp=new DatagramPacket(data,data.length,ip,4321);ds.send(dp);//发送数据包} catch (Exception e) {e.printStackTrace();}}}TCP与UDP的比较:1、使用UDP时,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。对于TCP协议,由于它是一个面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中多了一个连接建立的时间。2、使用UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。而TCP没有这方面的限制,一旦连接建立起来,双方的socket就可以按统一的格式传输大量的数据。UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。而TCP是一个可靠的协议,它确保接收方完全正确地获取发送方所发送的全部数据。
相关文章推荐
- 【学习日记】java网络编程知识点总结
- Java学习总结12——网络1(Java Socket参数详解)
- Java网络编程实践和总结 --- URLConnection的学习
- java基础学习总结——网络编程
- 并发编程学习总结(六) :java 显式锁ReentrantLock使用详解之测试锁与超时
- Java学习疑惑(7)----网络编程, 详解TCP与UDP两者之间的共同点和差异
- Java网络编程学习笔记(3)ServerSocket用法详解
- Java基础学习总结(18)——网络编程
- 并发编程学习总结(七) :java中synchronized关键字使用详解(1)
- java基础学习总结——网络编程
- Java学习总结12——网络2(Java Socket选项详解)
- Java基础学习总结(18)——网络编程
- 并发编程学习总结(四) :java 显式锁ReentrantLock使用详解之lock()\unlock() 加锁与释放锁
- java网络编程学习笔记(三):ServerSocket详解
- Java学习总结12——网络2(URLConnection详解)
- 黑马程序员---java网络编程学习总结
- Java基础学习总结(18)——网络编程
- java网络编程---socket用法详解(学习心得)
- 黑马程序员-自己总结的java学习笔记(8)网络编程
- 详解Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)