JAVA进阶——Socket编程


一、Socket知识
1. Socket概述
(1)Java最初是作为网络编程语言出现的,它对网络的高度支持,使得客户端和服务器端流畅的沟通成为现实。

(2)在网络编程中,使用最多的就是Socket,每一个实用的网络程序都少不了它的参与。

(3)在计算机网络编程技术中,两个进程或者说两台计算机可以通过一个网络通信连接实现数据的交换,这种通信链路的端点就被称为“套接字”(英文名称也就是Socket)。

(4)Socket是网络驱动层提供给应用程序的一个接口或者说一种机制。

(5)使用物流送快递的例子来说明Socket:

        –>发件人将有收货人地址信息的货物送到快递站,发件人不用关心物流是如何进行的,货物被送到收货人所在地区的快递站点,进行配送,收货人等待收货就可以了。

        –>这个过程很形象地说明了信息在网络中传递的过程。其中,货物就是数据信息,2个快递站点就是2个端点Socket。

(6)信息如何在网络中寻址传递,应用程序并不用关心,只负责准备发送数据和接收数据即可。

2. 接收数据乱码
对于这种服务端或客户端接收中文乱码的情况通常是因为数据发送时使用的编码跟接收时候使用的编码不一致。比如有下面这样一段服务端代码:
 View Code
 
这里用来测试我就弄的混乱了一点。在上面服务端代码中我们在定义输入流的时候明确定义了使用GBK编码来读取数据,而在定义输出流的时候明确指定了将使用UTF-8编码来发送数据。如果客户端上送数据的时候不以GBK编码来发送的话服务端接收的数据就很有可能会乱码;同样如果客户端接收数据的时候不以服务端发送数据的编码,即UTF-8编码来接收数据的话也极有可能会出现数据乱码的情况。所以,对于上述服务端代码,为使我们的程序能够读取对方发送过来的数据,而不出现乱码情况,我们的客户端应该是这样的:

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/291840.html

(0)
上一篇 2022年10月26日
下一篇 2022年10月26日

相关推荐

发表回复

登录后才能评论