黑马程序员----网络编程学习1~11天学习笔记

---------------------- android培训java培训、期待与您交流! ----------------------

   小知识点总结:
      1、 网络编程3要素:IP、端口、传输协议。
      2、 各应用程序的端口号不能重复,端口号范围:0~65536;0~1024被系统保留(不建议使用)。
      3、 127.0.0.1是本地回还地址;xx.xx.xx.255是该频段的广播地址(建立UDP协议 socket时,该频段的其它IP地址都可收到)。
      
      
   UDP协议和TCP协议的区别:
      UDP  1、面向无连接,不需要建立连接,速度快。
        2、将数据封包后发送,每个数据包限制在64K之内
        3、不可靠协议
       
      TCP  1、通过三次握手完成连接
        2、可进行大数据量传输
        3、可靠协议
       
       
   IP地址操作类:InetAddress
   UDP协议类:DatagramSocket、DatagramPacket
   TCP协议类:Socket、ServerSocket

 

以下是2个练习,运用udp的socket进行发送信息

 

import java.net.InetAddress;
import java.net.DatagramSocket;
import java.net.DatagramPacket;

	class udpSend {
	public static void main(String args[]) throws Exception{
		//1、创建udp服务,通过DatagramSocket对象
		DatagramSocket ds = new DatagramSocket();
		//2、确定数据,封装成数据报。DatagramPacket(byte[] buf, int length, InetAddress address, int port)
		byte bytes[] = "udp is using!".getBytes();
		DatagramPacket dp = new DatagramPacket(bytes,bytes.length,InetAddress.getByName("10.20.52.15"),10000);
		//3、通过socket服务,将已有的数据发送出去,通过send方法
		ds.send(dp);
		//4、关闭资源
		ds.close();
	}
		
	}
	
	class udpReceive {
	public static void main(String args[]) throws Exception{
		//1、创建udp socket,建立端点
		DatagramSocket ds = new DatagramSocket(10000);
		
		//2、定义数据包,用于存储数据
		byte bytes[] = new byte[1024];
		DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
		//通过socket服务的receive方法接收数据并存入数据包中
		ds.receive(dp);
		//通过数据包中的方法获得其中的数据
		String ip = dp.getAddress().getHostAddress();
		String data = new String(dp.getData(),0,dp.getLength());
		int port = dp.getPort();
		System.out.println(ip+"::"+data+"::"+port);
		//关闭资源
		ds.close();
	}
	}

 

import java.io.*;
import java.net.*;
	class Send implements Runnable{
		private DatagramSocket ds;
		public Send(DatagramSocket ds){
			this.ds = ds;
		}
		public void run(){
			try{
				byte data[] = null;
				BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
				String line = null;
				while((line = bufr.readLine())!= null){
					if(line.equals("886"))
						break;
					data = line.getBytes();
					DatagramPacket dp = new DatagramPacket(data,data.length,InetAddress.getByName("10.20.52.255"),10000);
					ds.send(dp);
			}
			}catch(Exception e){
					throw new RuntimeException("FALSE");
				}
		}
	}
		
		
	class Rece implements Runnable{
		private DatagramSocket ds;
		public Rece(DatagramSocket ds){
			this.ds = ds;
		}
		
		public void run(){
			try{
					while(true){
					byte[] bytes = new byte[1024];
					DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
					ds.receive(dp);
					String ip = dp.getAddress().getHostAddress();
					String data = new String(dp.getData(),0,dp.getLength());
					System.out.println(ip+"::"+data);
								}
			}catch(Exception e){
					throw new RuntimeException("FALSE");
				}
			
		}
	}
	
	
	class ChatDemo{
		public static void main(String args[]) throws Exception{
			DatagramSocket sendSocket = new DatagramSocket();
			DatagramSocket receSocket = new DatagramSocket(10000);
			new Thread(new Send(sendSocket)).start();
			new Thread(new Rece(receSocket)).start();
		}
		
	}

 
---------------------- android培训java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima

 

你可能感兴趣的:(网络编程)