zoukankan      html  css  js  c++  java
  • 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();
                    }
                }
            }
            
     
         }
    }
  • 相关阅读:
    [Python]打印Python的版本信息
    [Python]YIELD_2
    [Python]YIELD_1
    [Linux]查看Linux版本信息
    [Python]Python的class(类)中的object是什么意思
    [Linux]Linux里查看所有用户
    [Python]NEXT方法
    [Linux]主机配置互信
    [Linux]重启命令【echo "b" > /proc/sysrq-trigger】和【reboot】
    [Python]利用PDB来进行Python调试
  • 原文地址:https://www.cnblogs.com/tinyj/p/10122961.html
Copyright © 2011-2022 走看看