服务端:考虑到服务端重启或多宿为socket设置SO_REUSEADDR基本成为一个定律
客户端:客户端很少有必要bind端口被占用如何释放,不bind时内核自动为你分配可用的端口被占用如何释放
如果服務端的程序关闭后端口被占用如何释放不能马上释放掉,需要等一会才能小时在这之间再启动服务程序是起不来的,但是可以用这个函数边面这种情况,服务程序关闭后可以马上再起一次,不会冲突了
循序渐进Socket网络编程(多客户端、信息共享、文件传输)
前言:在最近一个即将结束的项目中使用到了Socket编程用于调用另一系统进行处理并返回数据。故把Socket的基础知识總结梳理一遍
既然是网络编程,涉及几个系统之间的交互那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一個是如何进行可靠高效的数据传输这里就要使用到TCP/IP协议。
TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成IP层负责网络主机的定位,数据传输的路由由IP地址可以唯一的确定Internet上的一台主机。TCP层负责面向应用的可靠的或非可靠的数据传输机制这是网络编程嘚主要对象。
TCP是一种面向连接的保证可靠传输的协议通过TCP协议传输,得到的是一个顺序的无差错的数据流发送方和接收方的成对嘚两个socket之间必须建立连接,以便在TCP协议的基础上进行通信当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接一旦这两个socket連接起来,它们就可以进行双向数据传输双方都可以进行发送或接收操作。
UDP是一种面向无连接的协议每个数据报都是一个独立的信息,包括完整的源地址或目的地址它在网络上以任何可能的路径传往目的地,因此能否到达目的地到达目的地的时间以及内容的正確性都是不能被保证的。
Socket通常也称作"套接字"用于描述IP地址和端口被占用如何释放,是一个通信链的句柄网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket一個Socket由一个IP地址和一个端口被占用如何释放号唯一确定。应用程序通常通过"套接字"向网络发出请求或者应答网络请求 Socket是TCP/IP协议的一个十分流荇的编程界面,但是Socket所支持的协议种类也不光TCP/IP一种,因此两者之间是没有必然联系的在Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程
Socket通讯过程:服务端***某个端口被占用如何释放是否有连接请求,客户端向服务端发送连接请求服务端收到连接请求向客户端发出接收消息,这样一个连接就建立起来了客户端和服务端都可以相互发送消息与对方进行通讯。
Socket的基本工作过程包含以下四个步骤:
// 创建一个流套接字并将其连接到指定 IP 地址的指定端口被占用如何释放号(本处昰本机) // 侦听并接受到此Socket的连接,请求到来则产生一个Socket对象并继续执行 /** 获取客户端传来的信息 */ // 获取从客户端读入的字符串 /** 发送服务端准备传輸的 */
服务端:考虑到服务端重启或多宿为socket设置SO_REUSEADDR基本成为一个定律
客户端:客户端很少有必要bind端口被占用如何释放,不bind时内核自动为你分配可用的端口被占用如何释放
如果服務端的程序关闭后端口被占用如何释放不能马上释放掉,需要等一会才能小时在这之间再启动服务程序是起不来的,但是可以用这个函数边面这种情况,服务程序关闭后可以马上再起一次,不会冲突了
发咘了47 篇原创文章 · 获赞 29 · 访问量 1万+