socket

socket 
 点对点通信
 应用:qq,游戏,硬件交互
有两种通信方式:tcp(面向流通信)  udp(数据报通信)

端口:出入数据的门
系统向应用层开发:1000-9999  

tcp协议下的面向流式通信
 服务器思路:
  1 建立通道 
    ServerSocket server = new ServerSocket(端口);
  2等待客户端发请求
    Socket client=server.accept();
  3 收到请求后读取消息
   
   BufferedReader reader=new BufferedReader(new InputStreamReader(client.getInputStream()));
    String xx= reader.readLine();
  4 向对方发消息
   PrintWriter print=new PrintWriter(socket.getOutputStream());
   print.println(要发的消息);
   print.flush();

  5 关闭流和通道

 客户端思路:
   1 建立和服务器的连接
     Socket sock = new Socket(服务器ip地址,端口);
   2 向对方发消息
   PrintWriter print=new PrintWriter(socket.getOutputStream());
   print.println(要发的消息);
   print.flush();

   3 收对方给的消息
   BufferedReader reader=new BufferedReader(new InputStreamReader(client.getInputStream()));
    String xx= reader.readLine();
   4 关闭流和通道
1网络通信的用途和特点
 2socket通信两种形式
    1   Tcp/ip  --->多线程结合
    2    udp 
 3 URL编程 URI

 
  1网络通信的用途和特点
     1点对点通信(地址)
     2用途 聊天 四人游戏 二人游戏
         硬件交互(智能家电,远程控制电器开启)
    
    
      端口:1~65535
      软件:1000~9999
             
 TCP/IP协议通信过程
  一服务器:
     1 ServerSocket server =new ServerSocket(5000);
     2 等待别人跟我连接 Socket client= server.accept()
     3 读消息
         InputStream is=client.getInputStream();
        BufferedReader reader=new BufferedReader( new InputStreamReader(is));
        reader.readLine();
     4 发消息
          OutputStream os=clinet.getOutputStream();
        PrinterWriter ww=  new  PrinterWriter(os);
        ww.println("xxx");
        ww.flush();
    5:关闭相关资源
       流
       通道
       服务器
       
二  客户端、
     1 Socket cok = new Socket("127.0.0.1",5000);
     2 发消息
           OutputStream os=cok.getOutputStream();
        PrinterWriter ww=  new  PrinterWriter(os);
        ww.println("xxx");
     3 读消息
           InputStream is=cok.getInputStream();
        BufferedReader reader=new BufferedReader( new InputStreamReader(is));
        reader.readLine();
    5:关闭相关资源
       流
       通道
    
    
    通信内容:
    
    读写对象:
        序列化:ObjectInputStream /ObjectOutputStream
        Userinfo  Serializable
        ObjectOutputStream xx=new ObjectOutputStream( new FileOutputStream(D:/xxxxs))
        xx.writeObject(userinfo)
    
socket通信
  1BufferedReader  PrintWriter 发文本消息
  2 ObjectInputStream/ObjectOutputStream   对象通信
  3 FileInputStream/FileOutputStream    图片        
  4 多线程 
        
服务器端--》socket --->读  写消息
            ---》socket-->读  写消息
           ---》socket-->读  写消息
   多线程           
           

           
           
           
UDP特点:不用建立通道,部分客户端和服务器端,效率高,不安全
   DatagrameSocket  用来收发数据报的对象
   DatagramePacket 数据
   
Tcp特点:需要建立连接,关闭连接,
               安全稳定但效率比较低
   
 收消息过程:
   1   DatagrameSocket ds = new DatagrameSocket(5000);
   2   
       byte[] arr = new byte[1024];
       DatagramePacket packet = new DatagramePacket(arr,arr.length);
       ds.receiver(packet);
  3  查看
       String str = new String(packet.getDatas(),0,packet.getDatas().length)
   
   
   
 发消息:
     1  DatagrameSocket ds = new DatagrameSocket();
     2  DatagramePacket packet = new DatagramePacket(数据byte[],数据长度,ip地址 InetAddress,端口);
       ds.send(packet);

 协议:
   tcp/ip: 应用层(http ftp)     传输层(tcp udp)    网络层(ip)     数据链路层(link)
     tcp: 建立连接  关闭连接 效率低 安全可靠
     udp: 不需要建立连接 效率高,不安全
     
   InetAddress对象   网络地址对象   域名/ip地址
        InetAddress  add = InetAddress.getByName("www.baidu.com");
       add.getHostName();
        add.getHostAddress();
        InetAddress  add = InetAddress.getLocalHost();
        
    端口:   1~65532           
udp通信:
      发消息
         DatagrameSocket sock = new DatagrameSocket();
         DatagramePacket pack = new DatagramePacket(发消息byte数组,消息长度,InetAddress对象,端口);
         sock.send(pack);
         
      收消息
         DatagrameSocket sock = new DatagrameSocket(端口);
          byte[] arr=new byte[100]
           DatagramePacket pack = new DatagramePacket(arr,arr.length);
          sock.receiver(pack)
          
          
    url网络通信       
      URL 统一资源定位
      
      
      
      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值