黑马程序员——————java中的网络编程

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

网络编程中的几个基本概念:

IP地址
          1.在网络中唯一标识一台主机的32位比特码,用点分十进制表示
          2.本地回环地址:127.0.0.1  主机名:loaclhost

端口号
          1.IP地址标识的是主机,是点到点通讯的标识。端口号是用

            于表示主机中一个进程的逻辑地址,是端到到通讯的标识        

             
          2.有效端口:0-65535,其中0-1024系统使用或保留端口

传输协议
          通讯的规则
          常见协议:TCP,UDP:二者的区别是:

                                 UDP:面向无连接,对讲机的例子
                                将数据及 源和目的封装成数据包中,

                                 不需要建立连接 每个数据报的大小

                                 在限制在64K内 因无连接,是不可

                                 靠协议不需要建立连接,速度快                            
                                  

                                 TCP:必须有连接,才能传输数据,

                                 电话机的例子建立连接,形成传输数

                                 据的通道在连接中建立大量数据传输
                                  通过三次握手完成连接,是可靠协议
                                  必须建立连接,效率会稍低。
Socket:
          Socket就是为网络服务提供的一种机制。
          通信的两端都有Socket
          网络通信其实就是Socket间的通信
          数据在两个Socket间通过IO传输

现在先来看UDP:

定义UDP发送端:

import java.net.*;
class UdpSend
{
public static void main(String[] args)
{
   DatagramSocket ds=new DatagramSocket();
byte[] buf="wo shi Udp".getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.254"),10000);
ds.send(dp);
ds.close();
}
}
定义UDP接收端:

import java.net.*;
class UdpRece
{
public static void main(String[]args)
{
  DatagramSocket ds=new DatagramSocket(10000);
  while{
     byte[] buf=new byte[1024];
 DatagramPacket  dp=new DatagramPacket(buf,buf.length);
 ds.receive(dp);
 String ip=dp.getAddress().getHostAddress();
 String data=new String(dp.getData(),dp.getLength());
 int port=dp.getPort();
 System.out.println(ip+"...."+data+":::"+port);
 ds.close();
  }
}
}
 

现在再来看看TCP:

定义Tcp客户端:

import java.net.*;
import java.io.*;
class TcpClient
{
public static void main(String[]args)
{
   Socket s=new Socket("192.168.1.254",10003)
OutputStream out=s.getOutputStream();
out.write("wo shi tcp".getBytes());
s.close();
}
}
定义Tcp服务端:

import java.io.*;
import java.net.*;
class TcpServer
{
public static void main(String[]args)
{
  ServerSocket ss=new ServerSocket(10003);
  Socket s=ss.accept();
  String ip=s.getInetAddress().getHostAddress();
  System.out.println(ip+".........connected");


  InputStream in=s.getInputStream();
  byte[] buf=byte[1024];
  int len=in.read(buf);
  System.out.println(new String(buf,0,len);
  s.close();

}
}

URL类:

构造函数:URL(String spec) 根据URL字符串标识形式创建URL对象

                  URL(String protocal,String host,int port,String file)分开输入URL中的字段值

常用方法的演示:



import java.net.*;
class URLDemo
{
public static void main(String[]args)
{
  URL url=new URL("http://192.168.0.254:8080/m/2.html?name=haha&age=30");
  System.out.println("getProtocal()"+url.getProtocol());
  System.out.println("getHost()"+url.getHost());
  System.out.println("getPort()"+url.getProt());
  System.out.println("getPath()"+url.getPath());
  System.out.println("getPath()"+url.getPath());
  System.out.println("getFile()"+url.getFile());
  System.out.println("getQuery()"+url.getQuery());
  
}
}
 

DNS服务器:

作用是把网站的域名解析为IP地址,分为递归查询和迭代查询两种方式另外在解析时

要先从本地的C:\\windows\\system32\divers\etc\hosts配置文件中查询,


小技巧:将常用网站的域名和ip地址的映射添加到上面的配置文件中可以提高解析

的速度;还可以将一些流氓网站的域名对应的ip地址设置为本机这样就不能自动连上。

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



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值