# wsock.tcp.socks5Server 库模块帮助文档

## wsock.tcp.socks5Server 成员列表 <a id="wsock.tcp.socks5Server" href="#wsock.tcp.socks5Server">&#x23;</a>

多线程 SOCKS5/SOCKS4 代理服务端。  
兼容 SOCKS4、SOCKS4a、SOCKS5 协议。  

> web.view 支持 SOCKS5，inet.http,web.rest 支持 SOCKS4 。  

wsock.tcp.socks5Server 在当前线程同步启动监听端口。  
改用 wsock.tcp.socks5Server.async 可创建后台线程异步启动启动监听端口。  

相关类库: wsock.tcp.socks5Client

### wsock.tcp.socks5Server.async <a id="wsock.tcp.socks5Server.async" href="#wsock.tcp.socks5Server.async">&#x23;</a>
多线程 SOCKS5/SOCKS4 代理服务端（创建后台线程异步启动启动监听端口）。  
兼容 SOCKS4、SOCKS4a、SOCKS5 协议。  

> web.view 支持 SOCKS5，inet.http,web.rest 支持 SOCKS4 。  

注意 wsock.tcp.socks5Server.async 在在标准库 wsock.tcp.socks5Server 内实现的类。  
与 wsock.tcp.socks5Server 不同的是：  
wsock.tcp.socks5Server.async 会创建服务线程异步启动 wsock.tcp.socks5Server 服务端，  
调用 start 方法会立即返回，并可直接调用 stop 方法停止服务。  
在启动服务端以后，仍然可以调用 setUpstreamProxy 方法修改上游服务端地址。  

相关类: wsock.tcp.socks5Server, wsock.tcp.socks5Client

### wsock.tcp.socks5Server.async() <a id="wsock.tcp.socks5Server.async" href="#wsock.tcp.socks5Server.async">&#x23;</a>
[返回对象:Socks5ServerAsyncObject](#Socks5ServerAsyncObject)

### wsock.tcp.socks5Server.async(IP,端口,用户名,密码) <a id="wsock.tcp.socks5Server.async" href="#wsock.tcp.socks5Server.async">&#x23;</a>
创建多线程 SOCKS 代理服务端。  
IP 默认为 "0.0.0.0",端口默认为 1080。  
用户名和密码为可选参数,不提供则不需要认证。  
注意: SOCKS4 不支持密码认证

## Socks5ServerAsyncObject 成员列表 <a id="Socks5ServerAsyncObject" href="#Socks5ServerAsyncObject">&#x23;</a>

### Socks5ServerAsyncObject.allowSocks4 <a id="Socks5ServerAsyncObject.allowSocks4" href="#Socks5ServerAsyncObject.allowSocks4">&#x23;</a>
是否允许 SOCKS4 连接,默认为 true。  
SOCKS4 不支持密码认证,如需强制认证可设为 false

### Socks5ServerAsyncObject.getLocalIp() <a id="Socks5ServerAsyncObject.getLocalIp" href="#Socks5ServerAsyncObject.getLocalIp">&#x23;</a>
返回 2 个值: 服务端 IP 地址,端口号

### Socks5ServerAsyncObject.getUrl() <a id="Socks5ServerAsyncObject.getUrl" href="#Socks5ServerAsyncObject.getUrl">&#x23;</a>
返回 `socks5://IP:端口` 格式的地址。  
web.view 等支持此格式。  
inet.http,web.rest 系统客户端兼容此格式（自动转换为`socks=IP:端口` 格式）。

### Socks5ServerAsyncObject.id <a id="Socks5ServerAsyncObject.id" href="#Socks5ServerAsyncObject.id">&#x23;</a>
服务器唯一ID,字符串。  
所有继承自 wsock.tcp.server 的服务端。  
在任何线程都可以调用 wsock.tcp.server.closeById 关闭服务端。

### Socks5ServerAsyncObject.setTimeouts() <a id="Socks5ServerAsyncObject.setTimeouts" href="#Socks5ServerAsyncObject.setTimeouts">&#x23;</a>
[返回对象:Socks5ServerAsyncObject](#Socks5ServerAsyncObject)

### Socks5ServerAsyncObject.setTimeouts(发送超时,接收超时,连接超时) <a id="Socks5ServerAsyncObject.setTimeouts" href="#Socks5ServerAsyncObject.setTimeouts">&#x23;</a>
设置超时，以毫秒为单位。  
必须在调用 start 方法以前调用此函数才会生效。  

所有参数都是可选参数，连接超时默认为 5000 毫秒，其他参数默认为 0 （无限超时）。  
此函数返回对象自身。

### Socks5ServerAsyncObject.setUpstreamProxy() <a id="Socks5ServerAsyncObject.setUpstreamProxy" href="#Socks5ServerAsyncObject.setUpstreamProxy">&#x23;</a>
[返回对象:Socks5ServerAsyncObject](#Socks5ServerAsyncObject)

### Socks5ServerAsyncObject.setUpstreamProxy(IP,端口,用户名,密码) <a id="Socks5ServerAsyncObject.setUpstreamProxy" href="#Socks5ServerAsyncObject.setUpstreamProxy">&#x23;</a>
设置上游代理服务器，此函数返回对象自身。  
在调用 start 方法启动服务端之后，仍然可以调用此方法修改上游服务端地址。  
新的设置对下一次请求生效。  
web.view 或浏览器等可利用此方法实现动态修改代理服务器。  

所有参数都是可选参数，端口默认为 1080。  
参数 @1 可选以 `socks5://ip:port` 格式同时指定 IP 与端口。  

必须在调用 start 函数前设置。

### Socks5ServerAsyncObject.start() <a id="Socks5ServerAsyncObject.start" href="#Socks5ServerAsyncObject.start">&#x23;</a>
[返回对象:Socks5ServerAsyncObject](#Socks5ServerAsyncObject)

### Socks5ServerAsyncObject.start(线程数) <a id="Socks5ServerAsyncObject.start" href="#Socks5ServerAsyncObject.start">&#x23;</a>
异步启动服务端。  
此方法不会阻塞并返回对象自身。  

可选用参数 @1 指定工作线程数,默认为 10。

## Socks5ServerObject 成员列表 <a id="Socks5ServerObject" href="#Socks5ServerObject">&#x23;</a>

### Socks5ServerObject.allowSocks4 <a id="Socks5ServerObject.allowSocks4" href="#Socks5ServerObject.allowSocks4">&#x23;</a>
是否允许 SOCKS4 连接,默认为 true。  
SOCKS4 不支持密码认证,如需强制认证可设为 false

### Socks5ServerObject.getLocalIp() <a id="Socks5ServerObject.getLocalIp" href="#Socks5ServerObject.getLocalIp">&#x23;</a>
返回 2 个值: 服务端 IP 地址,端口号

### Socks5ServerObject.getUrl() <a id="Socks5ServerObject.getUrl" href="#Socks5ServerObject.getUrl">&#x23;</a>
返回 `socks5://IP:端口` 格式的地址。  
web.view 等支持此格式。  
inet.http,web.rest 系统客户端兼容此格式（自动转换为`socks=IP:端口` 格式）。

### Socks5ServerObject.id <a id="Socks5ServerObject.id" href="#Socks5ServerObject.id">&#x23;</a>
服务器唯一ID,字符串。  
所有继承自 wsock.tcp.server 的服务端。  
在任何线程都可以调用 wsock.tcp.server.closeById 关闭服务端。

### Socks5ServerObject.setTimeouts() <a id="Socks5ServerObject.setTimeouts" href="#Socks5ServerObject.setTimeouts">&#x23;</a>
[返回对象:Socks5ServerObject](#Socks5ServerObject)

### Socks5ServerObject.setTimeouts(发送超时,接收超时,连接超时) <a id="Socks5ServerObject.setTimeouts" href="#Socks5ServerObject.setTimeouts">&#x23;</a>
设置超时，以毫秒为单位。  
所有参数都是可选参数，连接超时默认为 5000 毫秒，其他参数默认为 0 （无限超时）。  
此函数返回对象自身。

### Socks5ServerObject.setUpstreamProxy() <a id="Socks5ServerObject.setUpstreamProxy" href="#Socks5ServerObject.setUpstreamProxy">&#x23;</a>
[返回对象:Socks5ServerObject](#Socks5ServerObject)

### Socks5ServerObject.setUpstreamProxy(IP,端口,用户名,密码) <a id="Socks5ServerObject.setUpstreamProxy" href="#Socks5ServerObject.setUpstreamProxy">&#x23;</a>
设置上游代理服务器，此函数返回对象自身。  
所有参数都是可选参数，端口默认为 1080。参数 @1 可选以 `socks5://ip:port` 格式同时指定 IP 与端口。  

因为 start 方法启动后就会一直运行，  
因此只能在调用 start 方法之前调用此函数。  
改用 wsock.tcp.socks5Server.async 创建异步启动 SOCKS5 服务端，  
则可在调用 start 方法以后调用 setUpstreamProxy 修改上游服务端地址。

### Socks5ServerObject.start(线程数) <a id="Socks5ServerObject.start" href="#Socks5ServerObject.start">&#x23;</a>
启动服务器。  
可选用参数 @1 指定工作线程数,默认为 10。  
此方法会一直运行，  
直到其他线程调用 wsock.tcp.server.closeById 关闭此服务端。  
可使用 id 属性获得此服务端 ID。  

改用 wsock.tcp.socks5Server.async 创建 SOCKS5 服务端  
则 start 方法可立即返回，并可调用 stop 方法停止服务。

## wsock.tcp 成员列表 <a id="wsock.tcp" href="#wsock.tcp">&#x23;</a>

### wsock.tcp.socks5Server() <a id="wsock.tcp.socks5Server" href="#wsock.tcp.socks5Server">&#x23;</a>
[返回对象:Socks5ServerObject](#Socks5ServerObject)

### wsock.tcp.socks5Server(IP,端口,用户名,密码) <a id="wsock.tcp.socks5Server" href="#wsock.tcp.socks5Server">&#x23;</a>
创建多线程 SOCKS 代理服务端。  
IP 默认为 "0.0.0.0",端口默认为 1080。  
用户名和密码为可选参数,不提供则不需要认证。  
注意: SOCKS4 不支持密码认证
