Socket 简介及面试题
Socket 简介
1.什么是Socket?
Socket是对TCP/IP 协议的抽象,是操作系统对外开放的接口。socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。我的理解就是Socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭).
2.Socket通信流程
先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。
3.Socket相关的面试题
编写一个网络应用程序,有客户端和服务器端,客户端向服务器发送一个字符串,服务器收到该字符串后将其打印到命令行上,然后向客户端返回该字符串的长度,最后客户端输出服务器端返回的该字符串的长度,分别用TCP和UDP两种方式去实现
3.1 TCP实现
TCPServer
LengthCalculator
TCPClient
3.2 UDP实现
UDPServer
UDPClient
Socket 简介及面试题相关推荐
- Socket简介及客户端服务器连接实例
注: 在客户端游戏开发中,使用HTTP进行网络通信的比较少,一般使用的都是Socket进行通信.而HTTP一般用于网页或者网页游戏. [Socket简介] 1.套接字(socket)概念 套接字(s ...
- socket简介和udp网络程序-发送、接收数据
socket简介 不同电脑上的进程之间如何通信 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起! 在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的. 其实TCP ...
- Socket网络编程面试题
Socket网络编程面试题 1.TCP和UDP的区别: 2.流量控制和拥塞控制的实现机制: 3.重传机制: 4.滑动窗口机制: 5.多线程如何同步: 6.进程和线程的区别: 7.进程间通讯的方式有哪些 ...
- 【Web Socket简介】
Web Socket简介 1. Web Socket 是 HTML5 的新协议,允许服务器端向客户端发送数据,是一种全双工.双向的通信方式,并且它可以保持长时间通信. 概念理解: [1]全双工:意思就 ...
- Android查缺补漏(IPC篇)-- 进程间通讯之Socket简介及示例
本文作者:CodingBlock 文章链接:http://www.cnblogs.com/codingblock/p/8425736.html 进程间通讯篇系列文章目录: Android查缺补漏(IP ...
- python socket 简介
Python 提供了两个基本的 socket 模块. 第一个是 Socket,它提供了标准的 BSD Sockets API. 第二个是 SocketServer, 它提供了服务器中心类,可以简化网络 ...
- linux 本地socket 简介
Unix domain socket 又叫 IPC(inter-process communication 进程间通信) socket,用于实现同一主机上的进程间通信.socket 原本是为网络通讯设 ...
- iOS进阶_Socket(Socket简介代码演练)
网络通讯三要素 TCP & UDP 三次握手 断开连接的四次握手 Socket套接字 了解了上面的概念,我们开始演练一下Socket #import "ViewController. ...
- 网络编程2之Socket简介和java.net包
一.Socket 通信链路的端点就被称为"套接字"(英文名Socket) 是提供给应用程序的接口 图文说明Socket Socket通信原理 二.java.net包 Java.ne ...
- Unix domain socket 简介(进程间通信,进程通信)
Unix domain socket 又叫 IPC(inter-process communication 进程间通信) socket,用于实现同一主机上的进程间通信.socket 原本是为网络通讯设 ...
最新文章
- 设计模式-创建型模式-建造者模式
- ubuntu server 10.04 LTS(64位)装不了花生壳的解决方法
- 类加载机制-双亲委派,破坏双亲委派--这一篇全了解
- 操作系统(2) -- 进程管理
- 14、ORACLE下的基本SQL操作
- ImagesSprite V1.1.1 Beta发布
- Origin2017绘制3D饼状图 去掉指定图例
- SVN A C D M G U R I的含义
- Android9.0添加HIDL
- [转]SQL Server 2000执行计划成本(2/5)
- windows快速创建文本文档的几个方法快捷键和
- uni-app个人中心页开发
- 罗马数字转换python_Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
- PostgreSQL 从cmin/cmax到combo cid
- 灰度拉伸python_对比度拉伸(一些基本的灰度变换函数)基本原理及Python实现
- tp5框架中调用支付宝线上资金预授权alipay.fund.auth.order.app.freeze接口
- 【LeetCode】309. Best Time to Buy and Sell Stock with Cooldown 最佳买卖股票时机含冷冻期(Medium)(JAVA)
- 比太阳还要明亮!天文学家发现使上最亮星体
- 华为防火墙实战配置教程,太全了
- Java基础概念——变量联系-计算公交车的人数
热门文章
- ora 01033 linux,数据库ORA-01033错误解决办法
- 经验模态分解(EMD)
- filmimpact安装教程_【更新】Premiere Pro CC 转场插件:FilmImpact 1 FilmImpact 2 v3.0.2
- python tkinter canvas
- Hadoop 核心原理(贼全面)
- Java 获取本机IP地址
- OpenSIPS Crash 宕机的初步解决办法(二)
- ImageOptim图片压缩工具免费版
- scara机器人用户坐标系标定与工具坐标(TCP)标定
- 巴斯勒相机的ip掩码_相机IP和带宽设置