1、Socket之间是如何通信的?
  1.1 通信是要两两之间进行的所以应该有至少一个客户端(Client)和一个服务器端(Server),一般来说都是多个c端对一个s端---c\s

  1.2 在客户端:可以创建Socket对象:Socket socket = new Socket(ip地址, 端口号);

  1.3 在服务器端:首先说明服务器不是硬件,而是一种软件。平时看到的“服务器”只是运行在服务器软件的硬件设备。标识服务器的类是:ServerSocket!ServerSocket ss = new ServerSocket(端口号);这么一写,呵呵,一个服务器搞定。

  1.4 客户端是如何找到服务端的呢?没错,就是通过IP地址和端口号。

      1.4.1 为什么还要端口号?通过IP地址知识能找到一台计算机而已,可是在一台计算机里面,有很多应用程序 啊,那你要找的服务器在哪里?这个时候就要通过端口号来找了,因为端口号是区分一台计算机上不同应用程序的关键;打个比方,你去找你同学,你知道你同学在XX班,然后你就去了XX班,然后你就根据你同学的样子找到了他。你同学的“样子”类似于程序的“端口”。你通过你同学所在班级和你同学的样子找到了你同学,那么你连接服务器就是你找到了服务器所在的计算机之后再通过端口连接了你要的服务器。

      1.4.2 服务器端为何不用写IP地址呢,原因很简单,服务器是让别的程序来找他的。只要s端设置自己的端口是什么(端口不能有突),客户端就会在这台计算机上找到服务器了。

  1.5 客户端和服务器之间建立联系:Socket与Socket之间的连接,客户端发送数据:socket.send();服务器端接收数据:Socket s = serverSocket.accept(); 一般都是先开服务器等待接收客户端的发送的数据的。一旦客户端和服务器端连接上了,那么两者之间就会形成一条“双向的管道”,客户端和服务器端的数据就是通过这个管道进行数据传输的,既然是双向的,那么c端可以向s端发数据,s端也可以向c端发送数据

  1.6 数据已什么形式发送?————流!socket.getInputStrem()和socket.getOutputStream()形成一收一发的态势。我开始很纳闷,为什么这两个流这样子就可以传输了呢?因为c端和s端通过socket来建立连接了,发送地和接受地就只是这两端的Socket了,这两个流不在两个建立好的管道之间流,还能往哪流呢?最后只是你想把接收到的流怎么处理罢了。

  1.7 多个客户端与一个服务器端的连接:如果有多个客户端的话就意味着有多个客户端Socket,所以也要在服务器端建立多个Socket和c端的Socket进行连接,形成各自c端和s端的管道。这样的话s端就要多次调用accept()方法了。

(完)

Java网络编程(二)关于Socket的一些个人想法的更多相关文章

  1. Java网络编程二:Socket详解

    Socket又称套接字,是连接运行在网络上两个程序间的双向通讯的端点. 一.使用Socket进行网络通信的过程 服务端:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端的连接 ...

  2. C#网络编程二:Socket编程

    一:什么是SOCKET socket的英文原义是"孔"或"插座".作为进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端 ...

  3. Linux 网络编程二(Socket创建)

    TCP通信 一个程序使用套接字需要执行4个步骤. --分配套接口和初始化 --连接 --发送或接收数据 --关闭套接字 涉及到的调用包括socket.bind.listen.connect(阻塞线程) ...

  4. Java 网络编程(二)

    以下例开始本文的内容: 例1,需求:上传图片. 客户端: 服务端点. 读取客户端已有的图片数据. 通过socket输出流将数据发给服务端. 读取服务端反馈信息. 关闭. class PicClient ...

  5. Java网络编程:什么是Socket编程?

    所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 我们开发的网络应用 ...

  6. Java网络编程二--基于UDP的编程

    DatagramSocket对象为基于UDP协议的Socket 构造器提供可以选择性绑定到指定端口和ip 创建完对象后调用:receive(DatagramPacket p) send(Dategra ...

  7. Java网络编程二

    向web站点发送get post请求,并从web站点取得响应 通相应的set方法,在调用connect()方法前,可以设置请求的各种参数,实现同浏览器类似的访问,调用connect()后可以调用相应的 ...

  8. 如何使用socket进行java网络编程(二)

    通过在如何使用socket进行java网络编程(一)中程序的编写,可以总结出一些常用的java socket编程的范例来. ServerSocket server = new ServerSocket ...

  9. java网络编程socket解析

    转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...

  10. day05 Java网络编程socket 与多线程

    java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...

随机推荐

  1. Linux 基础教程 32-解压缩命令

        将文件压缩后对提升数据传输效率,降低传输带宽,管理备份数据都有非常重要的功能,因此文件压缩解压技能就成为必备技能.相对于Windows中的文件解压缩工具百花争艳,在Linux中的解压缩工具则要 ...

  2. 12、Docker的网络--bridge

    单机网络 Bridge Network Host Network None Network 多机网络 Overlay Network 12.1 网络命名空间   启动一个容器 docker run - ...

  3. Oracle EBS学习网站列表

    Oracle官方文档库http://tahiti.oracle.com/http://www.oracle.com/technetwork/documentation/index.html#apps其 ...

  4. Markdown编辑器——常用语法

    Markdown是什么? 简短来说,他就是一款特别适用于写博客的编辑器.为什么适合呢,因为它特别的方便.以博客园的编辑界面来说,它原本的界面是这样的(有没有一种Word2003的既视感): 但是,当你 ...

  5. solr特点五: MoreLikeThis(查找相似页面)

    在 Google 上尝试一个查询,您会注意到每一个结果都包含一个 “相似页面” 链接,单击该链接,就会发布另一个搜索请求,查找出与起初结果类似的文档.Solr 使用MoreLikeThisCompon ...

  6. 扫描指定ip的端口(C#)

    class PingExam { public static void Main() { Ping ping = new Ping(); string ip = "192.168.1.43& ...

  7. 基于Quartz.net的远程任务管理系统 三

    在上一篇中,已经把服务端都做好了.那接下来就是Web的管理端了,因为很多时候服务器是有专门的运维来管理的,我们没有权限去操作,所以有个可以管理Job的工具还是很有必要的. Web管理端,我选择现在很成 ...

  8. Devexpress Winform初学笔记

    作为一个软件开发人员来说,得有自己的博客,可以用来ZB,哈哈!玩笑话..... 写博客并不仅仅是用来ZB的,他可以用来记录你在技术道路上探索遇到的坎,当然也有提高逼格的次然因素啦!小弟刚入博客园不久, ...

  9. C#中datagridviewz中SelectionMode的四个属性的含义

    C#中datagridviewz中SelectionMode的四个属性的含义 DataGridViewSelectionMode.ColumnHeaderSelect 单击列头就可以选择整列DataG ...

  10. django drf 自定义jwt用户验证逻辑

    新建Backend类 from django.contrib.auth.backends import ModelBackend from django.shortcuts import render ...