zoukankan      html  css  js  c++  java
  • 网络编程之TCP-Socket

    一.Socket

        ➢两个Java应用程产可通过一个双向的网络通信连接实现数据文换,这个及向链路的一端称
         为个Socket。
    Socket通常用来实现client-server(网络释义:主从式架构)连接。
         ➢java. net包中定义的两个类Socket和Serversopket(TCP服务器端的插座socket), 分别用来实现双向连接的
         cljent和server
         建立连接时所需的寻址信息为远程计算机的IP地址和端口号[区分不同的应用程序](Port number)

    补充:①端口号2字节,最多有65536个端口,一个应用程序可以占用多个端口②端口分两种:UDP端口和TCP端口,每一种都是65536个端口,它们是分开的


    二.程序实例

    首先是服务器端

     1 import java.io.DataInputStream;
     2 import java.net.*;
     3 /**
     4  * 一.public class ServerSocket extends Object implements Closeable
     5  * 这个类实现了服务器套接字。服务器套接字等待通过网络进入的请求。 
     6  * 它根据该请求执行一些操作,然后可能将结果返回给请求者。 
     7  * 综上所诉:ServerSocket类为阻塞式的类型
     8  * 
     9  * 二.public Socket accept()throws IOException
    10  * 侦听要连接到此套接字并接受它。 该方法将阻塞直到建立连接。
    11  */
    12 public class TCPserver {
    13      public static void main(String[] args) throws Exception {
    14             //等待客户端连接,告知serversocket服务器端在6666端口进行监听
    15             ServerSocket ss=new ServerSocket(6666);
    16             while(true) {//接收多个客户端连接
    17                 //接受客户端连接
    18                 Socket s=ss.accept();
    19                 //客户端接收到数据流
    20                 DataInputStream dis=new DataInputStream(s.getInputStream());
    21                 //打印
    22                 System.out.println(dis.readUTF());
    23                 //关闭流和服务器端口
    24                 dis.close(); s.close();
    25             }
    26         }
    27 }

    其次是客户端

     1 import java.io.DataOutputStream;
     2 import java.io.OutputStream;
     3 /**
     4  * public class Socket extends Object implements Closeable
     5  * 该类实现客户端套接字(也称为“套接字”)。 
     6  * 套接字是两台机器之间通讯的端点。
     7  * 
     8  *  构造方法public Socket(String host,int port)throws UnknownHostException,
     9  *  IOException创建流套接字并将其连接到指定主机上的指定端口号。
    10  */
    11 import java.net.*;
    12 public class Client {
    13     public static void main(String[] args) throws Exception{
    14         //客户端申请连接
    15         Socket sc=new Socket("127.0.0.1", 6666);
    16         //客户端通过流开始对话
    17         OutputStream os = sc.getOutputStream();
    18         //包装管道,以UTF-8的形式输出
    19         DataOutputStream dos=new DataOutputStream(os);    
    20         dos.writeUTF("莫西莫西,我是巫妖果子");
    21         //关闭流和客户端
    22         dos.close(); sc.close();
    23         }
    24 }

    温馨小提示:①程序启动时先启动server端(监听),再启动client端②程序原理图,包括数据流都是通过插座socket进行传输(后续待补充)

     

  • 相关阅读:
    Android git提交代码所需忽略的文件
    python 代码命名规范
    appium-设计思路
    appium-循环执行一条用例,失败时停止执行
    BeautifulReport 遇到的问题 template
    接口自动化
    python-装饰器
    linux-vi编辑器创建和编辑正文文件
    linux-文件的压缩与解压缩
    python学习第一天
  • 原文地址:https://www.cnblogs.com/zjm1999/p/10158963.html
Copyright © 2011-2022 走看看