Java Socket应用 通信技术

1.TCP(Transmission Control Protocol)传输控制协议,是面向链接的,可靠的,有序的,基于字节流的传输层通信协议。
2.UDP(User Datagram Protocol)用户数据报协议,是面向无连接的,不可靠的,无序的,面向报文的传输层通信协议。
Java中基于TCP提供的两个重要的类是服务端的ServerSocket和客户端的socket。基于UDP提供的连个类是DatagramPacket和DatagramSocket。具体代码如下:
TCP客户端:

try {
            Socket sc = new Socket("192.168.1.114",8650);
            OutputStream os = sc.getOutputStream();
            PrintWriter pw = new PrintWriter(os);
            pw.write("用户名:admin;密码:123456");
            System.out.println("哈哈");
            pw.flush();
            sc.shutdownOutput();
            InputStream is = sc.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String str = br.readLine();
            while(str!=null){
                System.out.println("我是客户端:服务器说:"+str);
                str = br.readLine();
            }
            is.close();
            br.close();
            os.close();
            pw.close();
            sc.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

TCP服务端:

try {
            ServerSocket ss = new ServerSocket(8650);
            //调用accept方法
            System.out.println("****服务器即将启动,等待链接****");
            Socket so = ss.accept();
            //通过输入输入量获取信息
            InputStream is = so.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String info = br.readLine();
            while(info!=null){
                System.out.println("服务端:"+info);
                info = br.readLine();
            }
            so.shutdownInput();
            OutputStream os = so.getOutputStream();
            PrintWriter pw = new PrintWriter(os);
            pw.write("欢迎");
            pw.flush();
            pw.close();
            os.close();
            is.close();
            isr.close();
            br.close();
            ss.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

UDP客户端:

InetAddress ia = InetAddress.getByName("localhost");
         int port=8650;
         byte[] data = "用户名:啊哈,密码:123456".getBytes();
         DatagramPacket dp = new DatagramPacket(data, data.length,ia,port);
         DatagramSocket ds = new DatagramSocket();
         ds.send(dp);

         byte[] data2 = new byte[1024];
         DatagramPacket dp2 = new DatagramPacket(data2, data2.length);
         ds.receive(dp2);
         String info = new String(data2, 0, dp2.getLength());
         System.out.println("客户端:服务器说:"+info);
         ds.close();

UDP服务端:

DatagramSocket ds = new DatagramSocket(8650); 
         byte[] data = new byte[1024];
         DatagramPacket dp = new DatagramPacket(data, data.length);
         System.out.println("********服务器端已经启动,等待链接********");
         ds.receive(dp);
         String info = new String(data, 0, dp.getLength());
         System.out.println("服务器端:客户说:"+info);
         InetAddress ia = dp.getAddress();
         int port = dp.getPort();
         System.out.println(port);
         byte[] data2 = "欢迎你".getBytes();
         DatagramPacket packet2 = new DatagramPacket(data2, data2.length, ia,port);
         ds.send(packet2);
         ds.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值