zoukankan      html  css  js  c++  java
  • 毕向东tcp学习笔记1

    项目功能:

    实现一次发送和接收,服务器接收客户端发送的内容并打印出来

    用最通俗的语言讲解下,上图中大椭圆是服务器,A、C是客户端,当客户端和服务器通过socket建立连接后

    1.两者之间形成一个通道,此时将要发送的内容放入流中:out.wirte(“字节数组")

    2.服务器端使用客户端的对象得到socket s,s包括客户端的IP,端口,内容等属性

    3.in来获取s中的内容,也就是客户端的out和服务器端的in一一对应

    4.最后服务器将(根据客户端生成的)s关闭。只有服务器的套接字ss可选择性关闭

    代码:

     1 /*
     2 * 客户端:
     3 *  通过查阅socket对象,发现TCP是面向连接的,所有对象建立时,就连接指定主机
     4 *  服务端存在并连接成功,形成通路后,再该通道进行数据传输
     5 
     6 步骤:
     7 1.创建socket服务,指定目的主机和端口
     8 */
     9 import java.io.*;
    10 import java.net.*;
    11 
    12 class tcpClient
    13 {
    14     public static void main(String[] args) throws IOException{
    15      //1.创建socket服务,指定目的主机和端口
    16      Socket s =new Socket("192.168.1.103",10000);
    17 
    18      //为了发送数据,应获取socket流的输出流
    19      OutputStream out = s.getOutputStream();
    20 
    21      //将内容放到流中
    22      out.write("tcp 我是客户端".getBytes());
    23 
    24      s.close();
    25     }
    26 }
    27 
    28 /*
    29 需求:定义端点接收数据并打印在控制台
    30 
    31 服务端:
    32 1.创建服务端serversocket对象并指定端口
    33   当不指定时,使用connect方法指定
    34 2. 获取连接过来的客户端对象
    35    通过serversocket的accept方法等待,阻塞式,无连接一直等待
    36 3.客户端如果发过来数据,服务端使用对应连接的读取流获取发过来数据
    37   打印在服务台
    38 4,关闭服务端(可选)
    39 */
    40 
    41  class tcpServer
    42 {
    43     public static void main(String[] args) throws IOException{
    44     
    45      //建立服务端socket服务,并监听端口
    46      ServerSocket ss =new ServerSocket(10000);
    47 
    48      //通过accept方法获取链接过来的客户端对象(s中有内容,端口,IP属性)
    49      Socket s = ss.accept();
    50      //IP:
    51      String ip =s.getInetAddress().getHostAddress();
    52      System.out.println(ip+"...连接成功" );
    53      //内容:获取客户端发送过来的数据,那么要使用客户端对象s
    54      InputStream in = s.getInputStream();
    55 
    56      byte[] buf =new byte[1024];
    57      int len=in.read(buf);
    58      String content = new String(buf,0,len);
    59      System.out.println("内容:"+content );
    60 
    61      s.close();//关闭客户端,服务器可以控制客户
    62      ss.close();//关闭服务端,可选操作
    63     }
    64 }
  • 相关阅读:
    Linux(Centos7)下redis5安装、部署、开机自启
    请求*.html后缀无法返回json数据的问题
    Linux搭建图片服务器减轻传统服务器的压力(nginx+vsftpd)
    Centos7和Centos6防火墙开放端口配置方法(避坑教学)
    分享一个酷炫动态登录页面html
    分布式全文搜索解决方案
    PHP实现支付宝登录
    PHP发送短信
    PHP中发送qq邮件
    ES6新语法(二)
  • 原文地址:https://www.cnblogs.com/shuqingstudy/p/4928668.html
Copyright © 2011-2022 走看看