Java教程

JAVA进阶——Socket编程

本文主要是介绍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编码来接收数据的话也极有可能会出现数据乱码的情况。所以,对于上述服务端代码,为使我们的程序能够读取对方发送过来的数据,而不出现乱码情况,我们的客户端应该是这样的:
这篇关于JAVA进阶——Socket编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!