• Java分享笔记:Java网络编程--TCP程序设计


    [1] TCP编程的主要步骤

      客户端(client):

        1.创建Socket对象,构造方法的形参列表中需要InetAddress类对象和int型值,用来指明对方的IP地址和端口号

        2.通过Socket对象的getOutputStream()方法返回OutputStream抽象类子类的一个对象,用来发送输出流。

        3.通过输出流的write方法输出具体的信息。

        4.关闭相应的流和Socket对象。

      服务端(server):

        1.创建ServerSocket类的对象,在构造器中指明端口号。

        2.调用ServerSocket类对象的accept()方法,返回一个Socket类的实例。

        3.通过Socket实例的getInputStream()方法获取一个输入流,用来接收来自客户端的信息。

        4.利用输入流接收数据,并处理数据。

        5.关闭相应的流、Socket对象、ServerSocket对象。

    [2] Java源程序 ( 注意:在测试时先开启服务端方法server(),再开启客户端方法client() )

     1 package pack01;
     2 
     3 import java.io.*;
     4 import java.net.*;
     5 import org.junit.Test;
     6 
     7 public class TestNet1 {
     8     
     9     @Test //***********************客户端测试方法***********************
    10     public void client() {
    11         
    12         Socket socket = null;    //建立客户端网络套接字
    13         OutputStream socket_os = null;  //客户端输出流
    14         
    15         try {
    16             //1.获取本机环路地址
    17             InetAddress inet = InetAddress.getByName("127.0.0.1");
    18             
    19             //2.创建Socket对象
    20             socket = new Socket(inet, 10000);
    21             
    22             //3.获取输出流
    23             socket_os = socket.getOutputStream();
    24             
    25             //4.客户端输出信息
    26             socket_os.write( "客户端发送信息".getBytes() );
    27             
    28         } catch (IOException e) {
    29             e.printStackTrace();
    30             
    31         } finally {
    32             
    33             try { //关闭输出流
    34                 socket_os.close();
    35             } catch (IOException e) {
    36                 e.printStackTrace();
    37             }
    38             
    39             try { //关闭客户端套接字
    40                 socket.close();
    41             } catch (IOException e) {
    42                 e.printStackTrace();
    43             }
    44         }
    45     }
    46     
    47     @Test  //***********************服务端测试方法***********************
    48     public void server() {
    49         
    50         ServerSocket serSocket = null;
    51         Socket socket = null;
    52         InputStream socket_is = null;
    53         
    54         try {
    55             serSocket = new ServerSocket(10000);
    56             socket = serSocket.accept(); //获取服务端套接字
    57             socket_is = socket.getInputStream(); //获取输入流
    58             
    59             byte[] b = new byte[100]; //用于接收信息的字节数组
    60             int len;
    61             StringBuffer sb = new StringBuffer();
    62             
    63             while( (len = socket_is.read(b)) != -1 ) {
    64                 sb.append( new String(b,0,len) ); //将字节信息连续保存在buffer数组里
    65             }
    66             System.out.println("来自" + socket.getInetAddress().getHostName() + "的信息:");
    67             System.out.println( sb );
    68             
    69         } catch (IOException e) {
    70             e.printStackTrace();
    71             
    72         } finally {
    73             
    74             try { //关闭输入流
    75                 socket_is.close();
    76             } catch (IOException e) {
    77                 e.printStackTrace();
    78             }
    79             
    80             try { //关闭Socket对象
    81                 socket.close();
    82             } catch (IOException e) {
    83                 e.printStackTrace();
    84             }
    85             
    86             try { //关闭ServerSocket对象
    87                 serSocket.close();
    88             } catch (IOException e) {
    89                 e.printStackTrace();
    90             }
    91         }
    92     }
    93 
    94 }

    注:希望与各位读者相互交流,共同学习进步。

  • 相关阅读:
    内存的分页管理方式解释
    分组统计SQL
    NUMA导致的Oracle性能问题
    SQL Server死锁的解决过程
    PHP创建对象的6种方式
    PHP编程20大效率要点
    php设置随机ip访问
    php使用QueryList轻松采集JavaScript动态渲染页面
    正确理解 PHP 的重载
    PHP 核心特性之匿名函数
  • 原文地址:https://www.cnblogs.com/EarthPioneer/p/9450280.html
Copyright © 2020-2023  润新知