• TCP/IP Socket通信demo


    一个实例通过client端和server端通讯

    客户端发送:“我是客户端,请多关照”

    服务端回复:“收到来自于"+s.getInetAddress().getHostName()+"的信息”

    package com.ykw.net;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.InetAddress;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    import org.junit.Test;
    
    //TCP_IP1
    //客户端给服务端发送信息。服务端输出此信息在控制台上
    //网络编程实际上就是Socket的编程
    public class TestTCP1 {
        
        //客户端
        @Test
        public void client(){
            Socket socket = null ;
            OutputStream os = null;
            
            try {
                //1.创建一个Socket的对象,通过构造器指明服务端的ip地址,以及接受程序的端口号
                socket = new Socket(InetAddress.getByName("127.0.0.1"),9090);
                //2.getOutputStream():发送数据,方法返回OutputStream的对象
                os = socket.getOutputStream();
                //3.具体的输出过程
                os.write("我是客户端,请多关照".getBytes());
            } catch (IOException e) {
                
                e.printStackTrace();
            }finally{
                //4.关闭相应的流和Socket对象
                if(os!=null){
                    try {
                        os.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(socket!=null){
                    try {
                        socket.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            
            
            
        
        }
        
        //服务器端
        @Test
        public void server(){
            ServerSocket ss=null;
            Socket s=null;
            InputStream is=null;
            try {
                //1.创建一个ServerSocket对象,通过构造器指明自身的端口号
                ss = new ServerSocket(9090);
                //2.调用其accept()方法,返回一个Socket对象
                s = ss.accept();
                //3.调用Socket对象的getInputStream()获取一个从客户端发送过来的输入流
                is = s.getInputStream();
                //4.对获取的输入流进行的操作
                byte [] b = new byte[20];
                int len;
                while((len = is.read(b))!=-1){
                    String str = new String(b,0,len);
                    System.out.println(str);
                }
                System.out.println("收到来自于"+s.getInetAddress().getHostName()+"的信息");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                //5.关闭相应的流以及Socket,ServerSocket的对象
                if(is!=null){
                    try {
                        is.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(s!=null){
                    try {
                        s.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(ss!=null){
                    try {
                        ss.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            
     
         }
    }
  • 相关阅读:
    求循环小数
    Android中Intent的用法总结
    Java中@Override的作用
    三种继承方式和访问控制方式对子类成员的影响
    设计一个用于人事管理的People(人员)类
    QSort函数对不同类型数据快速排序浅谈
    QSQLITE 使用
    c++控制内存分配
    dll加载过程全局变量会先初始化
    二维数组
  • 原文地址:https://www.cnblogs.com/tinyj/p/10122961.html
Copyright © 2020-2023  润新知