11.网络编程

1.软件结构

      C/S结构(Client:Server)

      B/S结构(Browser:Server)

2.网络通信协议

      传输控制协议/因特网互联协议:

3.协议分类

             (1) TCP(传输控制协议):类似打电话,对方只有接收到电话,才能传达信息。可靠(TCP的三次握手原则)

                         第一次握手,客户端向服务器端发出连接请求,等待服务器确认。
                         第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。
                         第三次握手,客户端再次向服务器端发送确认信息,确认连接。
 

             (2) UDP(用户数据协议):类似一种广播性质,不管有没有接收到信息,我只管广播。不可靠。

                        虽然UDP是不可靠,但是特性满足视频会议,QQ聊天等。

                        它是不可靠协议,因为无连接,所以传输速度快,但是容易丢失数据。

 

4.网络编程三要素

  (1)  协议:通信规则。

         (2)  IP地址:互联网协议地址,类似我们现实生活中的身份证。

         IP地址分类:IPv4、IPV6

  (3)  端口号:一台计算机在网络当中进行通信时,一个应用程序与另一个程序的数据连接出入口。

5.TCP通信程序

 (1)如果要想实现两台计算机数据交互,必须严格区分 Client  Server

 (2)Server 先行启动,等待 client 连接;

 (3)Cilenet 主动连接 Server ,连接才能成功,服务端不可以主动连接客户端;

6.Socket

 实现通信的两个类

1.java.net.Socket

2.java.net.ServerSocket

概念

Socket类实现客户端套接字,套接字指的是两台设备的之间的通讯的端点。

*套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程*

成员方法

public InputStream getInputStream() : 返回此套接字的输入流。

public OutputStream getOutputStream() 返回此套接字的输出流。

public void close() 关闭此套接字。

public void shutdownOutput() : 禁用此套接字的输出流。

6.Socket案例

Server端

public class ServerTCP { 
public static void main(String[] args) throws IOException { 
    System.out.println("服务端启动 , 等待连接 .... "); 

    // 1.创建 ServerSocket对象,绑定端口,开始等待连接 
    ServerSocket ss = new ServerSocket(6666); 

    // 2.接收连接 accept 方法, 返回 socket 对象. 
    Socket server = ss.accept(); 

    // 3.通过socket 获取输入流 
    InputStream is = server.getInputStream(); 

    // 4.一次性读取数据 
    // 4.1 创建字节数组 
    byte[] b = new byte[1024]; 

    // 4.2 据读取到字节数组中. 
    int len = is.read(b);

     // 4.3 解析数组,打印字符串信息 
    String msg = new String(b, 0, len);
    System.out.println(msg); 

    //5.关闭资源. 
    is.close(); 
    server.close(); } 
}

Clinet

public class ClientTCP { 

public static void main(String[] args) throws Exception { 
    System.out.println("客户端 发送数据"); 

    // 1.创建 Socket ( ip , port ) , 确定连接到哪里. 
    Socket client = new Socket("localhost", 6666); 

    // 2.获取流对象 . 输出流 OutputStream 
    os = client.getOutputStream(); 

    // 3.写出数据. 
    os.write("你好么? tcp ,我来了".getBytes()); 

    // 4. 关闭资源 . 
    os.close(); 
    client.close(); 
} 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值