对客户端和服务器端通信的理解
一、关键词解释
客户端:能向服务器发送信息,提出请求。
服务器:能接收客户端发来的请求,并能发送数据给客户端以做出回应。
从这里可以看出,我们的电脑可以充当双重角色。
1、当我们用浏览器浏览网页,要查看某个文件时,我们的电脑会发出请求给文件服务器,文件服务器收到请求并同意后,将文件数据传送到我们的电脑。此时,电脑充当客户端的角色。
2、当电脑和打印机通信后,打印机发送打印请求,此时我们可以令电脑发出打印信息(打印内容,单/双页打印等等)给打印机,打印机就可以开始打印了。此时电脑充当服务器的角色。
二、疑问及其理解
客户端与服务器是怎样进行通信的?
以上面的电脑例子来说的话。
1、通信首先需要进行通信的实体
电脑&&文件服务器(可能是台功能强大的电脑),电脑&&打印机。
2、然后是通信的媒介
如上面例子中用到的电缆或光缆,当然也可能是介于某一频谱范围内的看不见的无线电波。
3、最关键的是通信协议
电脑要和打印机交流,必须要规定通信的规矩,即协议(电脑发送一段数据过去,也许就是一个符号'Y',但打印机需要明白这是要打印的意思,所以他们事先要规定好什么是什么的意思,才不会出现对牛弹琴的现象)。当然,协议可多了,远不止于这一点。信息从电脑发出到文件服务器,就进过了许多的协议。本来是一段文字,经过某种协议被转化成能在媒介中传递的电信号或电磁波等信号,这些信号要达到文件服务器那一端,中途可能会碰到一系列的节点(能接受信息并做出处理的系统,如路由器),节点会按照某种协议告诉这些信号该怎样走才能到达文件服务器,然后信号开始沿着该节点告诉他的方向继续传递(要知道互联网的线路可是比蜘蛛网复杂的多,没有中间一系列节点的帮助,要达到目的地可不容易啊!)。最好要到达目的地时,要按照协议将电信号或电磁波信号转换为文件服务器能识别的信息。意思大概就是这样,如果想知道具体什么协议的话,就需要查看相关文献了,重中之重莫过于TCP/IP协议了。
三、用socket套接字实现应用程序间的通信
1、应用程序作为服务器时,可以用以下代码实现:
ServerSocket server=new ServerSocket(int Port);
//server是创建的服务器对象,Port为该服务器占用的端口号,只有当服务器和客户端的端口号相同时才能连接成功。
在服务器端进行等待:
Socket socket2=server.accept();//服务器等待客户机的访问,程序运行到此处将被堵塞,即不向下继续执行,直到有客户机访问该服务器
2、应用程序作为客户端时,可以用如下代码来创建将与端口号一致的服务器相连的客户端:
Socket client=new Socket(String IP,int Port);
//client是创建的客户端对象,IP、Port分别是该客户端占用的IP号、端口号,此时服务器的socket2被声明成功,堵塞状态不复存在,程序继续向下执行
3、客户端和服务器连上后,需要进行他们之间的通信,怎么办呢?可以分别获取两个对象的输入、输出流对象,以进行读写操作。
获取客户端的输入、输出流对象:
InputStream is_client=socket.getInputStream();
//is_client是客户端socket的输入流对象
OutputStream os_client=socket.getOutputStream();
//os_client是客户端socket的输入流对象
同样的,可以获取服务器端的输入、输出流对象:
InputStream is_server=socket2.getInputStream();
//is_server是客户端socket的输入流对象
OutputStream os_server=socket2.getOutputStream();
//os_server是客户端socket的输入流对象
4、有了输入、输出流对象后,可以用读写操作进行服务器和客户端之间的通信了。
a、客户端写入信息,服务器获取信息:
is_client.write("hello#".getBytes());//客户端写入"hello”,'#'是信息结束的协议
StringBuffer sb=new StringBuffer();//sb是长度可动态变化的字符串对象,便于添加字符和字符串,用来保存下面服务器读到的信息
char c;//用于保存读到的单个字节
c=os_server.read();//将读到的一个字节存储到变量c中
while(c!='#'){//当读到的字符不是表示信息结束的'#'时,就一直读取下去
sb.append(c);//将读到的字符添加到sb中
c=os_server.read();//继续读取下一个字节
}
接下来,服务器就可以对保存在sb中的信息进行相应的处理
b、同理,服务器回应客户端的过程,也就是服务器写入信息(os_server.write()),客户端读取信息(is_client.read())的,只是将上面的输入、输出流对象变换一下
相关推荐
基础的例子,适合新手学习理解TCP网络通信的过程
2 实验内容 基于TCP/IP的通信基本上都是利用SOCKET套接字进行数据通讯,程序一般分为服务器端和用户端两部分。设计思路(VC6.0下): 第一部分 服务器端 一、创建服务器套接字(create)。 二、服务器套接字进行...
初学 python,前段时间买了两本书《python 编程从入门到实践》《Python 核心编程第三版》,第一本书主要讲的是一些基本语法和一些基本的使用方法,而第二本则深入很多,自己看来也是一知半解,刚好看到了这部分网络...
单向认证:客户端向服务器发送消息,服务器接到消息后,用服务器端的密钥库中的私钥对数据进行加密,然后把加密后的数据和服务器端的公钥一起发送到 客户端,客户端用服务器发送来的公钥对数据解密,然后在用传到...
思想与Java中的编程思想一样,只不过Java中会使用多线程技术,在Vector集合保存客户端的socket对象,而MFC框架提供了CSocket类,它是一个异步通信的类,所以看上去代码比较Java的多线程代码简单的实现了一个对多的...
C#,基于UDP的Socket通信客户端,包含服务器端和客户端,有图形化界面,通过服务器IP连接,点对点通信,不支持一对多,功能上属于很简单的,演示和理解基于UDP的Socket通信原理有一定的帮助。
C#,基于TCP/IP的Socket通信客户端,包含服务器端和客户端,有图形化界面,通过服务器IP连接,是异步通信,非同步通信,点对点通信,不支持一对多,功能上属于很简单的,演示和理解基于TCP/IP的Socket通信原理有一定...
1)设计程序,分别构建通信的两端:服务器端和客户端应用程序,套接字类型为面向连接的Socket,自己构建双方的应答模式,实现双方的数据的发送和接收(S发给C,C发给S)。 2)服务端程序能响应单个或任意多个客户端...
3.3.2服务器端程序设计 17 3.4数流图 22 3.5关键的数据结构 22 3.5.1 TCP套接字数据结构 22 3.5.2 TCP的控制缓冲区 23 3.5.3 TCP套接字数据结构 24 四、设计成果 24 4.1设计实现的功能 24 4.2运行界面 25 4.3测试...
网络socket套接字编程服务器客户端程序 精心写好的socket通信程序,实现服务器同时接受多个连接! 效果类似于ftp登录时的欢迎信息 使用正确的用户和密码登录后...编译后先运行服务器端,然后运行客户端,端口号是9999
(3)与服务器端进行通信 (4)关闭套接字 四、系统流程图 五、系统设计 本课程设计按照系统的具体功能要求,首先应用Socket编程创建客户端和服务器端, 每多个客户端服务器端就会相因的创建一个线程,它们之间通过这个...
第二部分“浏览器外部通信”,以Ajax 和客户端—服务器端通信为主题;第三部分“部分高级脚本编程资源”,集中介绍了一批第三方脚本编程资源,包括库和A 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
第二部分“浏览器外部通信”,以Ajax 和客户端—服务器端通信为主题;第三部分“部分高级脚本编程资源”,集中介绍了一批第三方脚本编程资源,包括库和API。同时,每部分的最后一章都为案例研究,将学到的内容应用于...
第二部分“浏览器外部通信”,以Ajax和客户端—服务器端通信为主题;第三部分“部分高级脚本编程资源”,集中介绍了一批第三方脚本编程资源,包括库和API。同时,每部分的最后一章都为案例研究,将学到的内容应用于...
第二部分“浏览器外部通信”,以Ajax 和客户端—服务器端通信为主题;第三部分“部分高级脚本编程资源”,集中介绍了一批第三方脚本编程资源,包括库和API。同时,每部分的最后一章都为案例研究,将学到的内容应用于...
第二部分“浏览器外部通信”,以Ajax 和客户端—服务器端通信为主题;第三部分“部分高级脚本编程资源”,集中介绍了一批第三方脚本编程资源,包括库和API。同时,每部分的最后一章都为案例研究,将学到的内容应用于...
源代码部分则提供了一个完整的Java网络通信示例,包括客户端和服务器端的代码,展示了如何利用Java进行高效的网络数据传输,并可能包括多线程处理、异常处理和安全措施等高级功能。开题报告则为项目的启动提供了详细...
本课题是建立聊天通信模型,设计一个聊天室软件,包括服务器端和客户端。 服务器端功能:建造一个局域网聊天室名为CNetChatServerApp,实现对话框,用于显示用户数量,还可以更改用户数量,通知客户端刷新用户名单。...
简单的聊天室程序,采用客户/服务器模式,分为客户端程序和服务器端程序。由于服务器只能支持一个客户,实际上是一个点对点通信的程序。客户端程序和服务器程序通过网络交换聊天字符串内容,并在窗口的列表框中显示...