篇一 :socket和端口理解

socket和端口理解.txt爱一个人很难,恨一个人更难,又爱又恨的人最难。爱情永远不可能是天平,想在爱情里幸福就要舍得伤心!有些烦恼是我们凭空虚构的,而我们却把它当成真实去承受。socket和端口理解2009-05-19 00:03//

一个socket句柄代表两个地址对 “本地ip:port”--“远程ip:port”

在windows下叫句柄,在linux下叫文件描述符

socket为内核对象,由操作系统内核来维护其缓冲区,引用计数,并且可以在多个进程中使用。

至于称它为“句柄”“文件描述符”都是一样的

///aezealer/blog/item/3b1582f4909da9e77609d795.html转载于

首先,随着时间的推移,我会不断地向这篇里面加东西,知道我认为应该结束了为止。 这篇文档实际上是我的学习小结的一部分,所以如果有人能够来信指出其中的错误或不 足,那我可是感激淋涕了。

我假定读者已经对于socket连接的建立过程和各种状态转换比较熟悉了,因为这篇文档的 目的是澄清概念,而不是介绍概念。

在使用socket编程时,我们都知道在网络通信以前首先要建立连接,而连接的建立是通过 对socket的一些操作来完成的。那么,建立连接的过程大致可以分为以下几步:

…… …… 余下全文

篇二 :Socket端口

Socket端口

20xx年07月09日 星期一 14:54

转载自:/thread-13-1-1.html

要写网络程序就必须用Socket,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,write等几个基本的操作。是的,就跟常见的文件操作一样,只要写过就一定知道。

对于网络编程,我们也言必称TCP/IP,似乎其它网络协议已经不存在了。对于TCP/IP,我们还知道TCP和UDP,前者可以保证数据的正确和可靠性,后者则允许数据丢失。最后,我们还知道,在建立连接前,必须知道对方的IP地址和端口号。除此,普通的程序员就不会知道太多了,很多时候这些知识已经够用了。最多,写服务程序的时候,会使用多线程来处理并发访问。

我们还知道如下几个事实:

1。一个指定的端口号不能被多个程序共用。比如,如果IIS占用了80端口,那么Apache就不能也用80端口了。

2。很多防火墙只允许特定目标端口的数据包通过。

3。服务程序在listen某个端口并accept某个连接请求后,会生成一个新的socket来对该请求进行处理。

…… …… 余下全文

篇三 :如何查看Windows操作系统Socket端口占用情况

如何查看Windows操作系统Socket端口占用情况

以查看Radius端口占用情况为例:

1、在cmd中 输入 C:\>netstat -aop udp

2、由上图可见Radius (1812) 和 Radacct(1913)端口被进程ID是 9548的进程占用。

然后再任务管理器中查看9548进程是哪个执行程序,如下图所示:

…… …… 余下全文

篇四 :socket通讯端口并发量受限制解决方案

方案一

MaxUserPort和TcpTimedWaitDelay解除卸载异常 (2009-08-04 19:37:31)

对于 Windows 平台,其默认设置通常已经够用。但是,在极重负载下,可能需要调整 MaxUserPort 和 TcpTimedWaitDelay。这些参数决定应用程序请求的用户端口的可用性。

默认情况下,使用 MaxUserPort 参数,在值 1024 和 5000 之间(包括 1024 和 5000)对短暂(也就是短期的)端口进行分配。TcpTimedWaitDelay 参数控制应用程序关闭 TCP 连接后 OS 回收端口所需要等待的时间,默认值为 4 分钟。在重负载中,可能会超过这些限制,并导致“正在使用的地址:连接”异常。如果遇到“正在使用的地址:连接”异常,请尝试在

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 键下设置 MaxUserPort 和 TcpTimedWaitDelay 注册表值:

MaxUserPort = dword:00004e20(用十进制表示为 20,000)

…… …… 余下全文

篇五 :Java语言Socket接口用法详解

Socket接口用法详解

在Java中,基于TCP协议实现网络通信的类有两个,在客户端的Socket类和在服务器端的ServerSocket类,ServerSocket类的功能是建立一个Server,并通过accept()方法随时监听客户端的连接请求。

扩展:

ServerSocket中常用的构造函数及方法

构造函数:ServerSocket(int port) 这是一个构造方法,用于在当前的服务器默认的IP地址上监听一个指定的端口,即在指定的IP和端口创建一个ServerSocket对象

方法:

Socket accept() 产生阻塞,监听指定的端口,直至有客户端发来连接请求

void close() 关闭当前ServerSocket

InetAddress getInetAddress() 返回ServerSocket监听的,本机的IP地址

int getLocalPort() 返回ServerSocket监听的,本机的IP地址上指定的端口号

int getSoTimeout();void setSoTimeout(int timeout) 设置连接过程中没有得到相应的等待期限时间(TimeOut)

…… …… 余下全文

篇六 :socket 通信过程及流程

socket 通信过程及流程

下图是基于TCP协议的客户端

socket通信过程及流程

/服务器程序的一般流程:

服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回,同时应答一个ACK段,服务器收到后从accept()返回。

数据传输的过程:

建立连接后,TCP协议提供全双工的通信服务,但是一般的客户端/服务器程序的流程是由客户端主动发起请求,服务器被动处理请求,一问一答的方式。因此,服务器从accept()返回后立刻调用read(),读socket就像读管道一样,如果没有数据到达就阻塞等待,这时客户端调用write()发送请求给服务器,服务器收到后从read()返回,对客户端的请求进行处理,在此期间客户端调用read()阻塞等待服

务器的应答,服务器调用write()将处理结果发回给客户端,再次调用read()

socket通信过程及流程

阻塞等待下一条请求,客户端收到后从read()返回,发送下一条请求,如此循环下去。

…… …… 余下全文

篇七 :socket

一,网络编程中两个主要的问题

一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。

在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。

而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。

目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提 出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也 能及时得到服务。

二,两类传输协议:TCP;UDP

TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送 或接收操作。

…… …… 余下全文

篇八 :简析socket里面的bind指令

简单分析一下socket中的bind

在最开始接触bind的时候,只是在写基于tcp的server端的时候,知道在listen之前需要先bind一下,用来确保socket能在某个固定的端口监听。而bind的时候,函数参数中的端口填自己将要绑定的端口就行;而IP地址,需要填本机的IP,但是也可以用一个宏INADDR_ANY代替,用这个宏就可以不用查找本机的IP,它就可以代替本机的IP。当时只觉得这个INADDR_ANY比较神奇,但是由于当时觉得用起来很方便,也没出啥问题,也就没有再深究。

但是最近在做RTSP服务器的时候,有种特殊的应用,导致我不得不对bind这个函数仔细地看一下。

我们知道无论是UDP还是TCP,socket都会与一个本地的IP和端口想对应,我们往往把这个IP和端口称之为socket的源地址和源端口。当我们作为客户端利用socket去发送数据时,很少会去考虑这个源地址和源端口到底是什么,我们更关心的是它的目的地址和端口。我们往往只有在监听的时候,才去考虑这个源端口,所以我们在监听的时候会去用bind。当我们bind之后,内核就会将这个socket的源端口锁定到我们设定的端口上。但是这就有一个问题,这个bind绑定端口,是将本来没有源端口的socket绑定到我们指定的端口上,还是将一个已经分配了端口的socket重定向到我们指定的端口上呢?

…… …… 余下全文