黑马程序员-------Java笔记--------网络编程(UDP与TCP基本步骤)

来源:互联网 发布:2015淘宝刷钻价格表 编辑:程序博客网 时间:2024/05/20 08:41

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

  • 网络编程
    • 用语言(java)实现多台计算机的通信
  • 三大要素
    • IP地址:网络每一台计算机的唯一标识
      • 查看本机IP:ipconfig
      • 查看网络是否有问题:ping+ip地址
    • 端口:用于标识进程的逻辑地址
      • 每个网络程序至少有一个逻辑端口,用于标识进程的逻辑地址
      • 有效端口0-65535,其中0-1024系统使用或保留端口
    • 协议:定义通信规则
      • TCP(蓝牙,打电话,qq单聊)
        • 建立连接通道
        • 数据无限制
        • 面向连接(三次握手)
        • 可靠
        • 速度慢
      • UDP(qq群聊)
        • 把数据打包
        • 数据有限制
        • 面向无连接
        • 不可靠
        • 速度快
  • InetAddress(IP的包装类)
    • public staticInetAddress getByName(Stringhost)
    • 成员方法
      • IP地址:String getHostAddress()
      • 主机名:String getHostName()
  • package day10;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;//udp发送端public class Udp1 {public static void main(String[] args) throws SocketException, IOException {//创建发送端socket服务对象DatagramSocket ds=new DatagramSocket();//创建数据,打包//DatagramPacket(byte[] buf, int length, InetAddress address, int port)String s="hello world";byte[] bys=s.getBytes();int lenth=bys.length;InetAddress ip=InetAddress.getByName("192.168.0.107");int port=8001;DatagramPacket dp = new DatagramPacket(bys,lenth,ip,port);//发送数据ds.send(dp);//释放资源ds.close();}}
    package day10;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;//接收端public class Udp {public static void main(String[] args) throws IOException {//创建接收端Socket服务对象DatagramSocket ds = new DatagramSocket(8001);//创建数据包byte[] bys=new byte[1024];DatagramPacket dp=new DatagramPacket(bys,bys.length);//调用接收方法ds.receive(dp);//解析数据包打印在控制台String s=new String(dp.getData(),0,dp.getLength());String ip=new String(dp.getAddress().getHostAddress());System.out.println(ip+s);//释放资源ds.close();}}
  • ************************************************************************************************
  • TCP
    package day10;import java.io.IOException;import java.io.InputStream;import java.net.Socket;public class TcpSocket {public static void main(String[] args) throws  IOException {//创建客户端Socket对象连接Socket s=new Socket("192.168.0.107",8002);//获取输入流,读取数据InputStream is=s.getInputStream();byte[] bys=new byte[1024];int len=is.read(bys);System.out.println(new String(bys,0,len));//释放资源s.close();}}

    package day10;import java.io.IOException;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class Tcpserver {public static void main(String[] args) throws IOException {//创建服务器端Socket对象ServerSocket ss = new ServerSocket(8002);//监听连接Socket s=ss.accept();//获取输出流,写入数据OutputStream ou=s.getOutputStream();ou.write("hello world".getBytes());//释放资源ss.close();}}



0 0