首页 > 编程语言 >网络编程 续

网络编程 续

时间:2023-03-06 21:13:41浏览次数:45  
标签:java url 编程 网络 URL str new import

UDP编程步骤

  发送端

    1、创建一个DatagramSocket

    2、准备发送的数据,并且打包  DatagramPacket

      要指定:发送的数据,长度,接收方的IP,接收方的端口号

    3、通过DatagramSocket的send(数据报)

    4、关闭

  接收端

    1、创建一个DatagramSocket  要指定 监听的端口号

    2、准备一个DatagramPacket,用来接收数据  要指定装数据一个字节数组,以及长度

    3、通过DatagramSocket的receive(数据报)

    4、拆解数据

      通过DatagramPacket对象.getData()数据,DatagramPacket对象.getLength()实际接收的数据长度

    5、关闭

//示例代码
package com.atguigu.udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import org.junit.Test;
/*
 * UDP:非面向连接的
 * 
 * 有发送端和接收端两个应用程序
 */
public class TestUDP {
    @Test
    public void send()throws Exception{
        //1、创建Socket
        DatagramSocket ds = new DatagramSocket();
        
        //2、把数据打包成一个数据报,包
        String str = "双十二购物快乐";
        byte[] bytes = str.getBytes();
        InetAddress ip = InetAddress.getByName("192.168.24.71");
        DatagramPacket dp = new DatagramPacket(bytes, bytes.length, ip,8989);
        
        //3、通过socket发送出去
        ds.send(dp);
        System.out.println("发送完毕");
        
        //4、释放资源
        ds.close();
    }
    
    @Test
    public void reveive()throws Exception{
        //1、创建Socket
        DatagramSocket ds = new DatagramSocket(8989);//为它指定一个端口号,在端口号一直监听着
        
        //2、先创建一个数据报等着
        byte[] data = new byte[1024];
        DatagramPacket dp  = new DatagramPacket(data, data.length);
        
        //3、准备接受数据,从socket中接收数据,如果此时没有数据,这句代码会阻塞
        ds.receive(dp);
        
        //4、拆出数据
        String str = new String(dp.getData(),0,dp.getLength());
        System.out.println("收到的数据是:" + str);
        
        //5、关闭
        ds.close();
    }
}

URL编程

  在TCP的基础上

    服务器端  Web服务器

    客户端

      1、创建URL的对象  URL url = new URL(网址);

        网址:协议://主机名:端口号/文件路径名?参数名=参数值&参数名=参数值...

        例如:http://localhost:8080/1108web/index.html

        例如:http://localhost:8080/1108web/login?username=xx&password=xx

      2、与服务器建立连接

        InputStream is = url.openStream();

          这种方式只能使用get方法与服务器进行通信

          如果要给服务器传参数只能在网址后面通过?参数名=参数值&参数名=参数值...

        HttpURLConnection tc = (HttpURLConnection)url.openConnection();

          这种方式可以使用post方法与服务器进行通信

            如果要给服务器传数据,那么需要hc.setDoOutput(true);

            然后用OutputStream进行发送数据

      3、处理接收到数据

//示例一
package com.atguigu.url;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
/*
 * tomcat:是一个服务器
 * 浏览器:客户端
 */
public class TestURL {
    public static void main(String[] args) throws Exception{
        //自定义客户端
        
        URL url = new URL("http://192.168.24.71:8080/1108JavaWeb/index.html");
        /*System.out.println("协议:" + url.getProtocol());
        System.out.println("主机名:" + url.getHost());
        System.out.println("端口号:" + url.getPort());
        System.out.println("路径名:" + url.getPath());*/
        
        InputStream input = url.openStream();
        InputStreamReader isr = new InputStreamReader(input);
        BufferedReader br  = new BufferedReader(isr);    
        
        String str ;
        while((str=br.readLine())!=null){
            System.out.println(str);
        }
    }
}
//示例二:get
package com.atguigu.url;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
public class TestURL2 {
    public static void main(String[] args) throws Exception{
        URL url = new URL("http://192.168.24.71:8080/myweb/login?username=admin&pass=123");
        InputStream input = url.openStream();
        InputStreamReader isr = new InputStreamReader(input);
        BufferedReader br  = new BufferedReader(isr);    
        
        String str ;
        while((str=br.readLine())!=null){
            System.out.println(str);
        }
    }
}
//示例三:post
package com.atguigu.url;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class TestURL3 {
    public static void main(String[] args) throws Exception{
        URL url = new URL("http://192.168.24.71:8080/myweb/login");
        
        HttpURLConnection hc = (HttpURLConnection) url.openConnection();
        
        hc.setDoOutput(true);
        OutputStream output = hc.getOutputStream();
        PrintStream ps = new PrintStream(output);
//        output.write("username=chai&pass=123".getBytes());
        ps.println("username=chai&pass=123");
        
        InputStream input = hc.getInputStream();
        InputStreamReader isr = new InputStreamReader(input);
        BufferedReader br  = new BufferedReader(isr);    
        
        String str ;
        while((str=br.readLine())!=null){
            System.out.println(str);
        }
    }
}

标签:java,url,编程,网络,URL,str,new,import
From: https://www.cnblogs.com/woniupa/p/17185451.html

相关文章

  • 网络编程
    网络编程网络编程的三个要素1、IP地址或主机名InetAddressString:192.168.24.71每一个整数是1~255域名:www.baidu.com通过域名解析器,找对对应的ip......
  • Java实验-Swing 网络聊天室
    实验要求:综合Swing界面、多线程和Java的网络通信功能,实现仿QQ聊天:(1)界面设计如下:(2)要求在服务器端利用多线程响应客户端请求;//服务线程(内部类),用于处理客户端的服务线......
  • 函数编程:强大的 Stream API
    函数编程:强大的StreamAPI每博一文案只要有人的地方,世界就不会是冰冷的,我们可以平凡,但绝对不可以平庸。——————《......
  • 写 Python 代码不可不知的函数式编程技术
    把函数作为对象由于其他数据类型(如string、list和int)都是对象,那么函数也是Python中的对象。我们来看示例函数foo,它将自己的名称打印出来:deffoo():print("foo......
  • 函数式编程:Lambda 表达式
    函数式编程:Lambda表达式每博一文案曾经读过的依然令我感动的句子,生活总是不如意,但往往是在无数痛苦中,但往往是在无数痛苦中,在重重矛盾和艰难中才能成熟起来,坚强起来,爱......
  • 如果今天没有API接口,今天的程序员如何编程?
    这是一个非常有意思的问题,作为一名从业多年的程序员,我来回答一下这个问题。首先,接口是程序设计过程中最为常见的元素,不论是研发级程序员还是应用级程序员,在日常的编程过程中......
  • windows内核网络调试
    1windows网络调试2bcdedit/dbgsettingsnethostip:192.168.2.1port:500003Key=sfz54lfnnz7r.2qv9aiovadd5i.2gtkz3xamru32.cdwwl45caxfl456bcdedit/set{......
  • 网络流
    \(EK(Edmond—Karp)\)洛谷日报用最通俗的语言让你学会网络流模板:P3376【模板】网络最大流点击查看代码```//EK#include#definecsconst#defineilinline#def......
  • 网络安全(中职组)-B模块:Windows操作系统渗透测试
    任务环境说明:服务器场景:teltest服务器场景操作系统:Windows7(封闭靶机)1.通过本地PC中渗透测试平台Kali对服务器场景Windows进行系统服务及版本扫描渗透测试,并将该作显示......
  • 你也能成为“黑客”高手——趣谈Linux Shell编程语言
    作者:京东零售杜兴文我们看过很多在电脑命令行敲一些命令并给观众展示很高科技的画面感的电影,比如《盗梦空间》《操作系统革命》《代码》等等,再想想电影黑客帝国中的画面......