Java网络编程(二)关于Socket的一些个人想法
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的一些个人想法的更多相关文章
- Java网络编程二:Socket详解
Socket又称套接字,是连接运行在网络上两个程序间的双向通讯的端点. 一.使用Socket进行网络通信的过程 服务端:服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户端的连接 ...
- C#网络编程二:Socket编程
一:什么是SOCKET socket的英文原义是"孔"或"插座".作为进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端 ...
- Linux 网络编程二(Socket创建)
TCP通信 一个程序使用套接字需要执行4个步骤. --分配套接口和初始化 --连接 --发送或接收数据 --关闭套接字 涉及到的调用包括socket.bind.listen.connect(阻塞线程) ...
- Java 网络编程(二)
以下例开始本文的内容: 例1,需求:上传图片. 客户端: 服务端点. 读取客户端已有的图片数据. 通过socket输出流将数据发给服务端. 读取服务端反馈信息. 关闭. class PicClient ...
- Java网络编程:什么是Socket编程?
所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求或者应答网络请求. 我们开发的网络应用 ...
- Java网络编程二--基于UDP的编程
DatagramSocket对象为基于UDP协议的Socket 构造器提供可以选择性绑定到指定端口和ip 创建完对象后调用:receive(DatagramPacket p) send(Dategra ...
- Java网络编程二
向web站点发送get post请求,并从web站点取得响应 通相应的set方法,在调用connect()方法前,可以设置请求的各种参数,实现同浏览器类似的访问,调用connect()后可以调用相应的 ...
- 如何使用socket进行java网络编程(二)
通过在如何使用socket进行java网络编程(一)中程序的编写,可以总结出一些常用的java socket编程的范例来. ServerSocket server = new ServerSocket ...
- java网络编程socket解析
转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...
- day05 Java网络编程socket 与多线程
java网络编程 java.net.Socket Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的 ...
随机推荐
- Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果
目前Android的实现是:有来电时,音乐声音直接停止,铃声直接直接使用设置的铃声音量进行铃声播放. Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果. 如果 ...
- [label][Google-Developers] Your First Multi Screen Site
内容是任何网站最重要的部分. 所以,让我们为内容而设计,而不要让设计支配内容. 1. 首先确定我们需要的内容: 2. 基于这个内容,为无论宽.窄的 viewport 创建一个页面结构: 3. 然后在简 ...
- Buffer Pool--内存总结1
物理地址空间是处理器用来访问位于总线上的所有部件的集合.在32位处理器上,地址总线为32位,寻址空间为4GB.在使用PAE的32位服务器上,地址总线为36位,寻址空间为64GB.在64位的处理器上生产 ...
- 解决<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 过长
解决<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 过长 <i ...
- 10-08常用的TIME和DATE函数以及各个函数对应的头文件
系统时间和日期函数: #include <time.h> char *asctime(const struct tm *tm);//将tm中存放的信息转换为标准格式 ...
- VS中C#连接SQLite数据库处理器架构“x86”不匹配的问题
原文链接 https://www.cnblogs.com/zhaoliankun/p/9088200.html 我的环境配置:windows 64,VS,SQLite(点击下载),System.Dat ...
- window系统JAVA开发环境的搭建
1.java JSK工具包安装教程http://www.runoob.com/java/java-environment-setup.html 2.Eclipase编辑器安装包教程 http://ww ...
- WPF绑定BitMapImage
先说下图片文件存在服务器.wpf常用绑定图片地址没办法用.忽然想到,convert能否转字节数据?实验了下可以. 图片绑定字节数组. convert代码 public class PictureCon ...
- winform 版本号比较
Version now_v = new Version(strval); Version load_v = new Version(model.version.ToString()); if (now ...
- GO学习笔记 - 没有参数的 return 语句返回各个返回变量的当前值,这种用法被称作“裸”返回。
Go 的返回值可以被命名,并且就像在函数体开头声明的变量那样使用. 返回值的名称应当具有一定的意义,可以作为文档使用. 没有参数的 return 语句返回各个返回变量的当前值.这种用法被称作“裸”返回 ...