JAVA--Socket

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caoshiminYQS/article/details/86547118

TCP:

服务方:

package com.wsh.tcp.practice;


import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class LiSi {

    public static void main(String[] args) throws IOException {

        ServerSocket serverSocket = new ServerSocket(6666);
        Scanner scanner = new Scanner(System.in);
        Socket accept = serverSocket.accept();
        byte[] bytes = new byte[1024];
        InputStream inputStream = accept.getInputStream();

        // 获得与这个ServerSocket连接的Socket的输出流
        OutputStream outputStream = accept.getOutputStream();

        new Thread(){
            @Override
            public void run() {
                super.run();
                StringBuffer sb = new StringBuffer();
                int len = 0;
                try {
                    while((len= inputStream.read(bytes)) != -1){
                        sb.append(new String(bytes,0,len));
                        System.out.println(sb);
                        sb.setLength(0);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
        String send = "";
        while (!(send = scanner.nextLine()).equals("quit")) {
            // 如果输入的内容不是quit,那么程序继续

            outputStream.write(send.getBytes());
        }


        /*String result = scanner.nextLine();
        outputStream.write(result.getBytes());*/
        serverSocket.close();
    }
}

客户方: 

package com.wsh.tcp.practice;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class ZhangSan {
    static String send = "";
    public static void main(String[] args) throws IOException {
        // 把张三写成发送方

        Socket socket = new Socket("192.168.20.195",6666);
        Scanner scanner = new Scanner(System.in);
        OutputStream outputStream = socket.getOutputStream();
        InputStream inputStream = socket.getInputStream();
        byte[] bytes = new byte[1024];



        new Thread(){
            @Override
            public void run() {
                super.run();
                while (!(send = scanner.nextLine()).equals("quit")) {
                    // 如果输入的内容不是quit,那么程序继续
                    try {
                        outputStream.write(send.getBytes());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }

            }
        }.start();

        StringBuffer sb = new StringBuffer();
        int len = 0;
        while((len= inputStream.read(bytes)) != -1) {
            sb.append(new String(bytes, 0, len));
            System.out.println(sb);
            sb.setLength(0);
        }

        /*int read = inputStream.read(bytes);
        System.out.println(new String(bytes,0,read));*/

        socket.close();
        // 如果输入了quit,则循环终止
        // 那么关闭这个socket


    }
}

UDP:

接收方:

package com.yanqiushi.udp;

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

public class ReceiveMain {

    public static void main(String[] args) throws IOException {

        // 定义一个DatagramSocket监听8080端口
        DatagramSocket datagramSocket = new DatagramSocket(8080);

        byte[] bytes = new byte[1024];

        // 定义一个数据包,用来接受数据
        DatagramPacket datagramPacket = new DatagramPacket(bytes,0,bytes.length);

        while(true) {
            // 调用datagramScoket的方法receive,会将datagramSocket接受到的数据,存到datagramPacket中
            datagramSocket.receive(datagramPacket);

            String hostName = datagramPacket.getAddress().getHostName();

            // 根据datagramPacket获得的字节,创建字符串
            String data = new String(datagramPacket.getData(), 0, datagramPacket.getLength());

            System.out.println(data+"---from:"+hostName);
        }

    }

}

发送方:

package com.wsh.udp;

import com.wsh.util.Constants;

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

public class SendMain {

    public static void main(String[] args) throws IOException {

        DatagramSocket datagramSocket = new DatagramSocket(4564);

        // 创建一个地址对象,将ip地址传到构造方法中
        InetAddress address = InetAddress.getByName("192.168.20.221");

        byte[] bytes = new byte[1024];

        bytes = "我是谁?".getBytes();
        // 创建用来存储数据的数据包
        DatagramPacket datagramPacket = new DatagramPacket(bytes,bytes.length,address,8080);

        datagramSocket.send(datagramPacket);


    }
}

猜你喜欢

转载自blog.csdn.net/caoshiminYQS/article/details/86547118