一、Socket概述

Socket,即套接字。就两台主机之间逻辑连接的端点。(通俗来说:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket)。

TCP/IP协议是传输层协议,主要解决数据如何在网络中传输

HTTP应用层协议,主要解决如何包装数据

Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议、本地主机的IP地址、本地进程的协议端口、远程主机的IP地址、远程进程的协议端口。

二、Socket整体流程

Socket编程主要涉及到客户端服务端两个方面,首先是在服务器端创建一个服务器套接字
ServerSocket),并把它附加到一个端口上,服务器从这个端口监听连接。端口号的范围是0到
65536,但是0到1024是为特权服务保留的端口号,可以选择任意一个当前没有被其他进程使用的端口。

客户端(Socket)请求与服务器进行连接的时候,根据服务器域名或者IP地址,加上端口号打开一个套接字(也就是连接一个服务端)。当服务器接受连接后,服务器和客户端之间的通信就像输入输出流一样进行操作。

三、Socket原理图

四、Socket编程示例

1.服务端:

public class ServerDemo {public static void main(String[] args) throws Exception {//1.创建一个线程池,如果有客户端连接就创建一个线程, 与之通信ExecutorService executorService = Executors.newCachedThreadPool();//2.创建 ServerSocket 对象ServerSocket serverSocket = new ServerSocket(9999);System.out.println("服务器已启动");while (true) {//3.监听客户端Socket socket = serverSocket.accept();System.out.println("有客户端连接");//4.开启新的线程处理executorService.execute(new Runnable() {@Overridepublic void run() {handle(socket);}});}}public static void handle(Socket socket) {try {System.out.println("线程ID:" + Thread.currentThread().getId()+ "  线程名称:" + Thread.currentThread().getName());//从连接中取出输入流来接收消息InputStream is = socket.getInputStream();byte[] b = new byte[1024];int read = is.read(b);System.out.println("客户端:" + new String(b, 0, read));//连接中取出输出流并回话OutputStream os = socket.getOutputStream();os.write("没钱".getBytes());} catch (Exception e) {e.printStackTrace();} finally {try {//关闭连接socket.close();} catch (IOException e) {e.printStackTrace();}}}
}

2.客户端:

public class ClientDemo {public static void main(String[] args) throws Exception {while (true) {//1.创建 Socket 对象Socket s = new Socket("127.0.0.1", 9999);//2.从连接中取出输出流并发消息OutputStream os = s.getOutputStream();System.out.println("请输入:");Scanner sc = new Scanner(System.in);String msg = sc.nextLine();os.write(msg.getBytes());//3.从连接中取出输入流并接收回话InputStream is = s.getInputStream();byte[] b = new byte[1024];int read = is.read(b);System.out.println("老板说:" + new String(b, 0, read).trim());//4.关闭s.close();}}
}

什么是SOCKET通信,看完马上明白相关推荐

  1. 苹果微信王者荣耀哪个服务器人多,王者荣耀:QQ区和微信区哪个玩家多?看完会明白...

    原标题:王者荣耀:QQ区和微信区哪个玩家多?看完会明白 导读:王者荣耀:QQ区和微信区哪个玩家多?看完会明白 文|刺激小宇哥 阅读到这篇文章的各位趣友大家好!游戏无时无刻的丰富着我们的生活,也成为了我 ...

  2. 不愿意和别人打交道_不想麻烦别人,也不希望别人麻烦我,是什么心理?看完就明白...

    阅读本文前,请您先点击上面的"蓝色字体",再点击"关注",这样您就可以继续免费收到文章了.每天都有分享,完全是免费订阅,请放心关注. 注:本文转载自网络,侵删 ...

  3. 医院计算机管理在品管圈中的应用,品管圈在医院管理中怎么用?看完就明白了...

    原标题:品管圈在医院管理中怎么用?看完就明白了 品管圈(Quality Circle,QCC),又称"质量小组",是一种企业对基层员工的自主管理.全员品管及持续改善最佳的管理活动, ...

  4. android重置系统,安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了!...

    安卓手机越用越卡,恢复出厂设置真有用?别瞎搞,看完就明白了! 现在手机的价格逐渐的开始上升,一部好一点的手机价格还是比较贵的,所以很多人想要节省更多的换机支出,都会想要购买到一款可以使用的比较久的手机 ...

  5. android8卡顿,看完就明白为什么安卓手机卡顿,这个技巧教你解决卡顿

    原标题:看完就明白为什么安卓手机卡顿,这个技巧教你解决卡顿 Android由源代码开放,所以安卓手机拥有更多的黑科技功能.很多安卓用户觉得手机卡顿,其实是没有好好利用这些神奇功能.下面笔者就为大家介绍 ...

  6. 联通鸿蒙卡怎么样,联通腾讯大王卡对比百度大神卡:到底选谁看完就明白了

    联通腾讯大王卡对比百度大神卡:到底选谁看完就明白了最近几个月内,运营商三巨头之一的联通突然宣布与互联网三巨头(百度.阿里.腾讯)合作,推出适用不同消费群体的定制型号卡产品,令人惊喜的是在套餐资费优惠力 ...

  7. 一次调频二次调频matlab仿真,一次调频二次调频的原理及作用,看完终于明白了!...

    原标题:一次调频二次调频的原理及作用,看完终于明白了! 关注 在电网并列运行的机组当外界负荷变化引起电网频率改变时,网内各运行机组的调节系统将根据各自的静态特性改变机组的功率,以适应外界负荷变化的需要 ...

  8. android 中旋转往下抛动画,《全民解答》第26集:超级详细逆旋转发球教学 几点核心的关键点 看完马上开窍!...

    原标题:<全民解答>第26集:超级详细逆旋转发球教学 几点核心的关键点 看完马上开窍! 简介 观众朋友们大家好,欢迎收看全民解答,今天我们来讲一下逆旋转发球,那么逆旋转可以说是在现在专业比 ...

  9. 1n4007二极管的参数,看完就明白了

    1N4007是一种硅材料整流二极管,把方向交替变化的交流电换成单一方向的脉冲直流电,广泛应用于各种交流变直流的整流电路中.直插二极管1N4007,低频整流二极管,正向平均电流1A,耐压1000V,封装 ...

最新文章

  1. CodeGen API分析
  2. AttributeError: ‘NoneType‘ object has no attribute ‘group‘
  3. 公有云和私有云,哪种是大势所趋?
  4. (转)SplitContainer 控件(Windows 窗体)
  5. 【转】 android之如何在两个activity之间传递handler_利用broadcast广播机制
  6. [HDU3037]Saving Beans,插板法+lucas定理
  7. 开发效率不高?强烈推荐这十款精选IDEA插件
  8. 前端试题-CSS试题(1)
  9. Java + selenium 元素定位(3)之By TagName
  10. linux:如何修改用户的密码
  11. 51单片机lcd1602显示(模块)
  12. 飞思卡尔单片机DZ60---时钟初始化
  13. IntelliJ IDEA 2018.2 x64激活
  14. 51信用卡的面试问题
  15. python告诉你迪丽热巴 vs 杨幂 vs 林志玲谁最美
  16. CultureInfo中重要的InvariantCulture
  17. 最新抖音快手随机看小姐姐网站源码修复
  18. Spring - BeanFactoryPostProcessor 扩展接口
  19. Quorum Raft
  20. [下载演讲稿]数字藏品与元宇宙存储—数字新世界的“土壤”

热门文章

  1. 【精选】ARMv8/ARMv9架构入门到精通-[前言]
  2. Vijos1881 闪烁的繁星
  3. HDC.Cloud2021|实时支撑华为消费者云千亿数据,高效出行的背后全因有TA
  4. IDEA出现乱码的各种解决方法
  5. Git远程仓库的提交 及常见错误及解决方法
  6. 利用autojs脚本开启QtScrcpy远程投屏
  7. 从0开始学股票进阶课之如何寻找热点板块
  8. 大战2013之二:破解浴火银河2硬盘版
  9. 抽象类中是否一定要有抽象方法?
  10. Spark高频面试题(建议收藏)