网络编程,UTP TCP简单实现

封装好的获取地址

  InetAddress it=InetAddress.getByName("YY");
        System.out.println(it.getAddress());
        System.out.println(it.getHostAddress());
        System.out.println(it.getHostName());

UDP

1、持续对话

        用runable实现   ;一个代码段一个类

package DatagramSocket;

import java.io.IOException;
import java.net.*;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        MyRunnable1 m1 = new MyRunnable1();
        new Thread(m1).start();
        Scanner sc = new Scanner(System.in);
        byte[] bytes = new byte[1024];
        try {
            while (true){
                String str = sc.next();
                bytes = ("Y:"+str).getBytes();
                DatagramSocket socket = new DatagramSocket();
                DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getByName("YY"),8888);
                socket.send(packet);
                if (str.equals("y")){
                    break;
                }
            }
        } catch (SocketException e) {
            throw new RuntimeException(e);
        } catch (UnknownHostException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
package DatagramSocket;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class Demo1 {
    public static void main(String[] args) {
        MyRunnable m = new MyRunnable();
        new Thread(m).start();
        try {
            byte[] bytes = new byte[1024];
            DatagramSocket socket = new DatagramSocket(8888);
            DatagramPacket packet = new DatagramPacket(bytes,1024);
            byte[] data = packet.getData();
            while (true){
                socket.receive(packet);
                String str = new String(data,0,packet.getLength());
                if (str.equals("y")){
                    break;
                }
                else {
                    System.out.println(str);
                }
            }

        } catch (SocketException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
package DatagramSocket;

import java.io.IOException;
import java.net.*;
import java.util.Scanner;

public class MyRunnable implements Runnable{
    @Override
    public void run() {
        Scanner sc = new Scanner(System.in);
        byte[] bytes = new byte[1024];
        try {
            while (true){
                String str = sc.next();
                bytes = str.getBytes();
                DatagramSocket socket = new DatagramSocket();
                DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getByName("YY"),6666);
                socket.send(packet);
                if (str.equals("y")){
                    break;
                }
            }
        } catch (SocketException e) {
            throw new RuntimeException(e);
        } catch (UnknownHostException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}
package DatagramSocket;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class MyRunnable1 implements Runnable{
    @Override
    public void run() {
        try {
            byte[] bytes = new byte[1024];
            DatagramSocket socket = new DatagramSocket(6666);
            DatagramPacket packet = new DatagramPacket(bytes,1024);
            byte[] data = packet.getData();
            while (true){
                socket.receive(packet);
                String str = new String(data,0,packet.getLength());
                if (str.equals("y")){
                    break;
                }
                else {
                    System.out.println(str);
                }
            }

        } catch (SocketException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
}

用Thread实现

找不到了;找到了在来补上

2、自己和自己玩(有bug)

import com.sun.xml.internal.ws.wsdl.writer.document.http.Address;

import java.io.IOException;
import java.net.*;
import java.util.Scanner;

/**
 * @author: zyd
 * @date: 2022/8/9 10:57
 */
public class wlbc {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
        byte[] b = new byte[1024];
        DatagramSocket socket = new DatagramSocket(9898);

        new Thread(){
            @Override
            public void run() {
                while (true){
                    try {
                       // socket.connect(new InetSocketAddress(8888));
                        DatagramPacket packet=new DatagramPacket(b,b.length);
                        socket.receive(packet);//接收
                       byte[] t=packet.getData();
                       String s=new String(t,0,t.length);
                        System.out.println(s);
                    } catch (SocketException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();

        while (true) {
            String s = sc.next();
            System.out.println("1"+s);
            byte[] bytes = s.getBytes();
            DatagramPacket packet = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.43.3"), 8888);
           // packet.setData(bytes);
            socket.send(packet);
        }
    }

}

TCP(把文件复制到另一个地方)

注意事项:切记,流是对文件的操作,复制过来后也要起一个文件名称

服务器

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author: zyd
 * @date: 2022/8/9 14:18
 */
public class tcpa {
    public static void main(String[] args) throws IOException {
        ServerSocket socket=new ServerSocket(9898);
        Socket accept = socket.accept();
        InputStream is=accept.getInputStream();
        File f=new File("D:\\temp\\fangwen\\mao.jpg");
        FileOutputStream os=new FileOutputStream(f);
        int temp=-1;
        byte[] b=new byte[1024];
        while((temp=is.read(b))!=-1){
                os.write(b,0,temp);
        }
        os.close();
        is.close();
        accept.close();
    }
}

客户端

import java.io.*;
import java.net.InetSocketAddress;
import java.net.Socket;

/**
 * @author: zyd
 * @date: 2022/8/9 14:30
 */
public class tcpb {
    public static void main(String[] args) throws IOException {
        FileInputStream f=new FileInputStream("E:\\Desktop\\壁纸\\猫.jfif");
        Socket socket=new Socket("10.11.2.88",9898);
        OutputStream os=socket.getOutputStream();
        byte[] b=new byte[1024];
        int temp=0;
        while ((temp=f.read(b))!=-1){
            os.write(b,0,temp);
        }
        os.close();
        socket.close();
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值