java 基于TCP/UDP协议的Socket编程

基于TCP协议的Socket编程
服务端代码

public class ServerLogin {

    public static void main(String[] args) throws IOException {
        //1.创建一个serverSocket对象,指定端口号
        ServerSocket serverSocket = new ServerSocket(8000);
        //2.监听客户端请求
        Socket scoket =  serverSocket.accept();
        //3.获取输入流,获得客户端发来的消息
        InputStream is = scoket.getInputStream();
        //4.获取输出流,向客户端写消息
        OutputStream os = scoket.getOutputStream();
        //5.读取字符串,用BufferedReader
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
        String info = null;
        while ((info=bufferedReader.readLine())!=null) {
            System.out.println("我是服务器,客户端信息是"+info);
        }
        //6.关闭输入流
        scoket.shutdownInput();

        //7.向客户端发消息
        info="欢迎您,登陆成功!";
        os.write(info.getBytes());
        bufferedReader.close();
        //8.关闭输出流
        os.close();
        //9.关闭监听
        scoket.close();
        //10.关闭socket 服务
        serverSocket.close();


    }
}

客户端代码

public class ClientLogin {

    public static void main(String[] args) throws UnknownHostException, IOException {
        //1.创建一个socket对象(指定服务器IP,端口号);
        Socket socket = new Socket("localhost",8000);
        //2.获得输出流,发送请求
        OutputStream os =   socket.getOutputStream();
        //3,获得输入流,接受服务端信息。
        InputStream is = socket.getInputStream();
        //4.向服务器段发送消息
        String info="用户名:tom,密码:123";
        os.write(info.getBytes());
        //5.关闭输出流。
        socket.shutdownOutput();

        //6.获得服务端推送的信息。
        BufferedReader bReader = new BufferedReader(new InputStreamReader(is));
        info = "";
        while((info=bReader.readLine())!=null){
            System.out.println("我是客户端,服务器响应的是:"+info);
        }
        //读完关闭
        os.close();
        //6.关闭输入流
        is.close();
        //7.关闭socket
        socket.close();
    }
}

基于UDP协议的Socket编程
服务端代码

public class ReceiveSocket {

    public static void main(String[] args) {
        DatagramPacket dp = null;
        DatagramSocket ds = null;
        DatagramPacket dpto = null;
        try {
            //创建DatagramPacket 对象,用来准备接收数据包
            byte[] buf = new byte[1024];
            dp = new DatagramPacket(buf, buf.length);
            //创建DatagramSocket对象接收数据
            ds = new DatagramSocket(8800);
            ds.receive(dp);
            //显示接收到的信息
            String mess = new String(dp.getData(),0,dp.getLength());
            System.out.println(dp.getAddress().getHostAddress()+"说:"+mess);
            String reply ="你好,我在,请咨询!";
            //显示本地对话框
            System.out.println("我  说:"+reply);
            //创建DatagramPacket对象,封装发送数据
            SocketAddress sa = dp.getSocketAddress();
            dpto = new DatagramPacket(reply.getBytes(), reply.getBytes().length,sa);
            //发送封包数据
            ds.send(dpto);
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            ds.close();
        }
    }
}

客户端发送代码

public class SendSocket {

    public static void main(String[] args) {
        InetAddress ip=null;
        DatagramSocket ds=null;
        try {
            String messString="你好,我想咨询一个问题.";
            //显示本地对话框
            System.out.println("我说:"+messString);
            //获得本机ip地址
            ip = InetAddress.getByName("localhost");
            //创建DatagramPacket 对象,封装数据
            DatagramPacket dpDatagramPacket = new DatagramPacket(messString.getBytes(), messString.length(),ip,8800);
            //创建DatagramSocket 对象,向服务器发送数据
            ds  = new DatagramSocket();
            ds.send(dpDatagramPacket);
            byte[] buf = new byte[1024];
            DatagramPacket dpreDatagramPacket = new DatagramPacket(buf, buf.length);
            //创建DatagramPacket 对象接收服务器发来的信息
            ds.receive(dpreDatagramPacket);
            //显示接收到的信息
            String reply = new String(dpreDatagramPacket.getData(),0,dpreDatagramPacket.getLength());
            System.out.println(dpreDatagramPacket.getAddress().getHostAddress()+"说"+reply);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            ds.close();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值