每日一学之socket编程(一)

图片来自于网络

什么是socket编程

网络上的两个程序,通过一个双向通信的链路,将两个程序连接起来,那么每一段都是一个socket。因此socket常被称为“套接字”。

对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。千万不要被Java中的SocketServerSocket迷糊了眼睛。

网络的分层

对于Java而言,Java的网络类始终只工作在TCP/IP网络中,始终运行在应用层和传输层上,因此,我们只需要了解适用于Internet的标准TCP/IP四层模型。

Java中Socket

Java使用客户端的socket:

1、通过构造函数创建新的socket

2、尝试连接远程主机

3、一旦建立连接之后就从socket取得输出流和输入流,使用这两个流收发数据

4、当数据传输完成之后,一端或者两端将关闭连接

Java使用服务端的socket:

1、通过构造函数创建新的ServerSocket

2、将serverSocket绑定在固定端口

3、阻塞的方式等待客户端来连接,由于服务端是不会关闭的,因此我们要使用点小手段保证服务端一直等待客户端来连接。连接上来后,就跟客户端处理一样了。

有一个小知识点:当你关闭流后,socket其实已经关闭;按照JavaAPI所说,这是一个双工通路。

上面的程序有两个个致命的缺陷,不知道大家能否看出来。那就是同时只能处理一个客户端的连接以及数据只能接收12个字节的长度。

本文来自企鹅号 - 人人会编程媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魂祭心

原 canvas绘制clock

5074
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2850
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3655
来自专栏C#

DotNet加密方式解析--非对称加密

    新年新气象,也希望新年可以挣大钱。不管今年年底会不会跟去年一样,满怀抱负却又壮志未酬。(不过没事,我已为各位卜上一卦,卦象显示各位都能挣钱...)...

5898
来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2767
来自专栏一个会写诗的程序员的博客

Spring Reactor 项目核心库Reactor Core

Non-Blocking Reactive Streams Foundation for the JVM both implementing a Reactiv...

2752
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

3278
来自专栏落花落雨不落叶

canvas画简单电路图

83511
来自专栏java 成神之路

使用 NIO 实现 echo 服务器

5547
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2997

扫码关注云+社区