`

Java中TCP和UDP

    博客分类:
  • Java
阅读更多
1. 网页内容获取

Url1.java

import java.net.URL;
public class Url1{
    public static void main(String[] args) throws Exception{
        URL url = new URL("http://java.sun.com:80/docs/books/tutorial/index.html#DOWN");
        String protocol = url.getProtocol();
        String host = url.getHost();
        String file = url.getFile();
        int port = url.getPort();
        String ref = url.getRef();
        System.out.println(protocol + ", " + host + ", " + file + ", " + port + ", " + ref);
    }
}
运行结果:
http, java.sun.com, /docs/books/tutorial/index.html, 80, DOWN


将html内容保存成txt文件格式

UrlConnection1.java

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
public class UrlConnection1{
    public static void main(String[] args) throws Exception{
        URL url = new URL("http://www.infoq.com");
        URLConnection conn = url.openConnection();
        InputStream is = conn.getInputStream();
        OutputStream os = new FileOutputStream("c:\\infoq.txt");
        byte[] buffer = new byte[2048];
        int length = 0;
        while(-1 != (length = is.read(buffer, 0, buffer.length))){
            os.write(buffer, 0, length);
        }
        is.close();
        os.close();
    }
}


另一种方式将html保存到成本地html

UrlConnection2.java

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
public class UrlConnection2 {
    public static void main(String[] args) throws Exception{
        URL url = new URL("http://www.csdn.net");
//        URLConnection conn = url.openConnection();
//        InputStream is = conn.getInputStream();
        InputStream is = url.openStream();
        OutputStream os = new FileOutputStream("c:\\infoq.html");
        byte[] buffer = new byte[2048];
        int length = 0;
        while(-1 != (length = is.read(buffer, 0, buffer.length))){
            os.write(buffer, 0, length);
        }
        is.close();
        os.close();
    }
}


打印www.sohu.com的源代码

UrlConnection3.java

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
public class UrlConnection3{
    public static void main(String[] args) throws Exception{
        URL url = new URL("http://www.sohu.com");
        BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
        String line = null;
        while(null != (line = br.readLine())){
            System.out.println(line);
        }
        br.close(); 
    }
}


读取http://www.baidu.com的网页源代码

UrlConnection4.java

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
class Win extends JFrame implements ActionListener, Runnable{
    JButton button;
    URL url;
    JTextField text;
    JTextArea area;
    byte b[] = new byte[118];
    Thread thread;
    public Win(){
        text = new JTextField(20);
        area = new JTextArea(12, 12);
        button = new JButton("确定");
        button.addActionListener(this);
        thread = new Thread(this);
        JPanel p = new JPanel();
        p.add(new JLabel("输入网址:"));
        p.add(text);
        p.add(button);
        Container con = this.getContentPane();
        con.add(new JScrollPane(area), BorderLayout.CENTER);
        con.add(p, BorderLayout.NORTH);
        setBounds(60, 60, 400, 300);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    public void actionPerformed(ActionEvent e){
        if (!(thread.isAlive())){
            thread = new Thread(this);
        }
        try{
            thread.start();
        }
        catch (Exception ee){
            JOptionPane.showMessageDialog(this, "我正在读取,请稍后", "提示信息", JOptionPane.ERROR_MESSAGE);
        }
    }
    public void run(){
        try{
            int n = -1;
            area.setText(null);
            url = new URL(text.getText().trim());
            InputStream in = url.openStream();
            while ((n = in.read(b)) != -1){
                String s = new String(b, 0, n);
                area.append(s);
            }
        }
        catch (MalformedURLException e1){
            text.setText("" + e1);
            return;
        }
        catch (IOException e1){
            text.setText("" + e1);
            return;
        }
    }
}
public class UrlConnection4{
    public static void main(String args[]){
        new Win();
    }
}


InetAddressTest.java

import java.net.InetAddress;
public class InetAddressTest{
    public static void main(String[] args) throws Exception{
        InetAddress address = InetAddress.getLocalHost();
        System.out.println(address);
        address = InetAddress.getByName("www.sohu.com");
        System.out.println(address);
    }
}


2. 套接字(Socket)实现TCP

TcpServer.java

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer{
    public static void main(String[] args) throws Exception{
        ServerSocket ss = new ServerSocket(5000);
        Socket socket = ss.accept();
        InputStream is = socket.getInputStream();
        OutputStream os = socket.getOutputStream();
        byte[] buffer = new byte[200];
        int length = is.read(buffer);
        System.out.println(new String(buffer, 0 ,length));
//        int length = 0;
//        while(-1 != (length = is.read(buffer,0, buffer.length))){
//            String str = new String(buffer, 0, length);
//            System.out.println(str);
//        }
        os.write("welcome".getBytes());
        is.close();
        os.close();
        socket.close();
    }
}


TcpClient.java

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class TcpClient{
    public static void main(String[] args) throws Exception{
        Socket socket = new Socket("127.0.0.1", 5000);
        InputStream is = socket.getInputStream();
        OutputStream os = socket.getOutputStream();
        os.write("hello world".getBytes());
        byte[] buffer = new byte[200];
        
        int length = is.read(buffer);
        System.out.println(new String(buffer, 0 ,length));
//        int length = 0;
//        while(-1 != (length = is.read(buffer,0, buffer.length))){
//            String str = new String(buffer, 0, length);
//            System.out.println(str);
//        }
        is.close();
        os.close();
        socket.close();
    }
}
运行结果:
Server端:hello world
Client端:welcome


3. 实现实时通信

ServerInputThread.java

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class ServerInputThread extends Thread{
    private Socket socket;
    public ServerInputThread(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run(){
        try{
            InputStream is = socket.getInputStream();
            while(true){
                byte[] buffer = new byte[1024];
                int length = is.read(buffer);
                String str = new String(buffer, 0, length);
                System.out.println(str);
            }
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }
}


ServerOutputThread.java

package code17;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class ServerOutputThread extends Thread{
    private Socket socket;
    public ServerOutputThread(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run(){
        try{
            OutputStream os = socket.getOutputStream();
            while(true){
                BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
                String line = reader.readLine();
                os.write(line.getBytes());
            }
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }
}


ClientInputThread.java

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
public class ClientInputThread extends Thread{
    private Socket socket;
    public ClientInputThread(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run(){
        try{
            InputStream is = socket.getInputStream();
            while(true){
                byte[] buffer = new byte[1024];
                int length = is.read(buffer);
                String str = new String(buffer, 0, length);
                System.out.println(str);
            }
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }
}


ClientOutputThread.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
public class ClientOutputThread extends Thread{
    private Socket socket;
    public ClientOutputThread(Socket socket){
        this.socket = socket;
    }
    @Override
    public void run(){
        try{
            OutputStream os = socket.getOutputStream();
            while (true){
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(System.in));
                String line = reader.readLine();
                os.write(line.getBytes());
            }
        }
        catch (IOException e){
            e.printStackTrace();
        }
    }
}


发送消息给客户端,接收客户端的消息

MainServer.java

import java.io.IOException;
import java.net.Socket;
public class MainClient{
    public static void main(String[] args) throws Exception, IOException{
        Socket socket = new Socket("127.0.0.1", 4000);
        new ClientInputThread(socket).start();
        new ClientOutputThread(socket).start();
    }
}


发送消息给服务器端,接收服务器端的消息

MainClient.java

import java.net.ServerSocket;
import java.net.Socket;
public class MainServer{
    public static void main(String[] args) throws Exception{
        ServerSocket serverSocket = new ServerSocket(4000);
        while(true){
            Socket socket = serverSocket.accept();
            //启动读写线程
            new ServerInputThread(socket).start();
            new ServerOutputThread(socket).start();
        }
    }
}


4. 无连接的数据报UDP

UdpTest1.java

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpTest1{
    public static void main(String[] args) throws Exception{
        DatagramSocket socket = new DatagramSocket();
        String str = "hello world";
        DatagramPacket packet = new DatagramPacket(str.getBytes(),
                str.length(), InetAddress.getByName("localhost"), 7000);
        socket.send(packet);
        byte[] buffer = new byte[1000];
        DatagramPacket packet2 = new DatagramPacket(buffer,100);
        socket.receive(packet2);
        System.out.println(new String(buffer, 0, packet2.getLength()));
        socket.close();
    }
}
运行结果:
启动UdpTest2.java后显示:
hello world


UdpTest2.java

import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpTest2{
    public static void main(String[] args) throws Exception{
        DatagramSocket socket = new DatagramSocket(7000);
        byte[] buffer = new byte[1000];
        DatagramPacket packet = new DatagramPacket(buffer, 1000);
        socket.receive(packet);
        System.out.println(new String(buffer, 0, packet.getLength()));
        String str = "welcome";
        DatagramPacket packet2 = new DatagramPacket(str.getBytes(),
                str.length(), packet.getAddress(), packet.getPort());
        socket.send(packet2);
        socket.close();
    }
}
运行结果:
启动UdpTest1.java后显示:
welcome
分享到:
评论

相关推荐

    Java使用TCP和UDP传输文件的源代码

    本资源是使用 java,分别用 TCP 和 UDP 传输文件的源代码。读者朋友可以下载下来,参考着满足自己的需求。 另有博客《Java 使用 TCP 和 UDP 传输文件》可以参考,地址是:...

    Java TCP和 UDP测试代码

    Java作为一门广泛使用的编程语言,提供了丰富的API来支持TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)这两种主要的网络通信协议。下面我们将深入探讨Java如何实现TCP和UDP的测试代码,以及...

    JAVA TCP和UDP Socket通信框架

    Java中的TCP和UDP Socket通信是网络编程的基础,用于在不同设备之间建立可靠的数据传输通道。TCP(Transmission Control Protocol)提供的是面向连接、有序且无损的服务,而UDP(User Datagram Protocol)则是无连接...

    java读写Modbus TCP UDP数据,java与modbus通信,Modbus TCP UDP与java通信 全开源

    java读写Modbus TCP UDP数据,java与modbus通信,Modbus TCP UDP与java通信 全开源 这是一个能正常通过Modbus TCP UDP协议读写项目 请放心下载,完全开源,在多个项目中已经使用

    基于java的TCP 和 UDP 协议源代码

    在计算机网络中,TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议,它们各自有着不同的特性和应用场景。本资源提供的是基于Java实现的TCP和UDP协议的源代码,可以直接运行并验证其正确性。 TCP...

    JAVA 实现TCP和UDP的DEMO源码

    在Java编程语言中,TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的网络通信协议,用于在互联网上实现数据的可靠传输。本文将深入探讨这两种协议的基本概念,以及如何使用纯Java来实现TCP和UDP的示例代码。...

    基于java socket使用tcp udp进行简易控制台命令与文件传输

    2) 基于Java Socket TCP和UDP实现一个简易的网络文件服务程序,包含服务器端FileServer和客户端FileClient; 3) 服务器端启动时需传递root目录参数,并校验该目录是否有效; 4) 服务器启动后,开启TCP:2021端口,...

    java-tcp-udp编程

    文件"运用JAVA的concurrent_ExecutorService线程池实现socket的TCP和UDP连接 - 空山不空 - 博客园.mht"揭示了一个高级话题:如何利用Java并发库中的`ExecutorService`来管理TCP和UDP的并发连接。`ExecutorService`是...

    tcp_udp_socket.zip_Java TCP/UDP_java Tcp _java socket _java tcp

    在IT行业中,网络编程是不可或缺的一部分,特别是在Java开发中,TCP和UDP协议是网络通信的基础。本实验项目“tcp_udp_socket.zip”旨在帮助开发者理解如何使用Java实现TCP和UDP的Socket通信。以下将详细讲解这两个...

    java实现TCP+UDP通信

    在IT行业中,网络通信是至关重要的一个领域,Java作为一门广泛应用的编程语言,提供了丰富的API来支持TCP(传输控制协议)和UDP(用户数据报协议)这两种不同的网络通信方式。本篇文章将深入探讨如何使用Java实现TCP...

    java实现的tcpudp通信

    本次实验旨在通过实践操作,帮助学生深入理解 TCP 和 UDP 的工作原理,并掌握使用 Java 进行网络编程的方法。 #### 实验目的 1. **熟悉 Java 开发环境**:学习如何使用 Java 实现 TCP 流通信和 UDP 数据报通信。 2...

    Socket_TCP_UDP.rar_java socket tcp udp_java socket 协议_java tcp u

    Socket编程是Java中用于网络通信的核心技术,它涵盖了TCP(传输控制协议)和UDP(用户数据报协议)两种主要的互联网协议。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,而UDP则是一种无连接的、不可靠...

    Socket之tcp和udp

    在标题“Socket之tcp和udp”中,涉及的核心知识点是TCP(传输控制协议)和UDP(用户数据报协议),这两种协议是网络通信中常见的传输层协议。 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层...

    java多线程实现TCP连接UDP聊天的聊天程序

    java多线程实现TCP连接UDP聊天的聊天程序

    实验一:基于java socket使用tcp udp进行简易控制台命令与文件传输(附简单的实验报告)

    2) 基于Java Socket TCP和UDP实现一个简易的网络文件服务程序,包含服务器端FileServer和客户端FileClient; 3) 服务器端启动时需传递root目录参数,并校验该目录是否有效; 。。。。。。附带简单的实验报告,只需...

    Java实现TCP和UDP传输(多线程)

    采用Java语言实现了TCP和UDP传输,TCP方面具体功能有:在客户端获取服务器根目录下文件列表、大小等,进入指定文件夹,退出文件夹;UDP方面的功能有:在客户端通过get方法获取服务器指定文件并下载到指定路径。

    netty搭建TCP、UDP服务

    它简化了网络编程,特别是对于TCP和UDP协议的处理,使得开发者能够轻松地搭建面向物联网(IoT)设备的上行和下行通信服务。 在TCP(传输控制协议)方面,Netty提供了全面的API来创建服务器和客户端。TCP是一种面向...

    TCP-UDP.rar_TCP/UDP优化_java tcp udp

    在UDP中,可以减少不必要的头部信息,提高传输效率。 4. **连接管理**:TCP的连接建立和关闭过程可能导致延迟,UDP则无需此步骤。优化时,要考虑如何在保证服务质量和响应速度之间找到平衡。 5. **多路复用**:TCP...

    java tcp/udp

    用Java编写的一个聊天程序,通信部分大部分是UDP通信

    tcp-udp.zip_java socket udp_java tcp udp

    本篇将深入探讨如何在Java环境中使用Socket进行TCP和UDP的文件传输。 TCP是一种面向连接的、可靠的传输协议,它通过三次握手建立连接,并确保数据包按顺序到达,如果数据包丢失,TCP会自动重传。在Java中,我们可以...

Global site tag (gtag.js) - Google Analytics