Java Socket 编程学习笔记(一)

最近面试的时候面试官问了我好几次关于Socket编程的知识,QAQ。一直没有深入学习过网络编程的内容。今天去图书馆借了一本孙卫琴老师的网络编程的书,这几周下了决心要好好学学。

Socket是什么

Socket一般翻译成中文叫套接字wiki是这么说的,network socket 是通过计算机网络的进程间通信(IPC)的端点。现在大部分的OS都实现了socket interface,也就是我们说的Socket APISocket API简单来说就是把下层的数据进行一封装,然后上层(应用层)利用API来进行与远程主机连接。是不是有点像Socket原来的意思呢(插座)?
Java 中套接字主要有三个类,分别是ServerSocketSocketDatagramSocket类,前两个是我今天要说的重点,都是建立在TCP协议的基础上,DatagramSocket是建立在UDP协议的基础上的。而且我们的Socket编程也是基于C/S通信模式的,那我再给大家科普一下这个C/S是什么鬼。

C/S通信模式是什么

大名客户端-服务器通信模式(client-server),和B/S(browser-server)一起是目前主流的通信模式,
C/S结构是酱紫:
b4b3f50629ab2c8b.png
C/S大致步骤是酱紫:

  1. 客户端向服务器发送请求,告诉服务器"我想干什么"。
  2. 服务器端接受到了客户端的请求,对请求进行分析,知道了客户端"想干什么",然后做出相应的操作来处理客户端的请求。
  3. 服务器端完成了操作之后,会向客户端发送一个响应,告诉客户端"劳资已经麻利的干完事了,还要干嘛",等待客户端的之后的请求。
  4. 客户端接受到服务器端的响应,并根据响应决定是否还要发送请求。
    我们今天的程序就是基于C/S来编写的,而且是在TCP/IP协议的基础上。

    服务器和客户端的socket通信过程

    deb14b31b0f4dd0e.jpg
    图中已经很清楚的说明了Java中服务器端和客户端的通信方式。
    实现的程序:客户端访问host为"localhost"(也就是127.0.0.1,已经在hosts文件里面有了),port为8000的服务器,访问成功后向其发送任意字符串,服务器端接受到来自客户端的字符串之后向客户端发送Echo:前缀的字符串,若客户端发送的字符串为bye,则服务器与客户端的 socket关闭。
    EchoSocket.java
    EchoService.java
    参考的链接:
    Network socket
    TCP协议
    客户端服务器模式

转载于:https://www.cnblogs.com/shonminh/p/JavaSocket.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值