是否可以强制Web服务客户端从特定范围的端口进行通话。 49到4999到80端口的Web服务器?
我现在明白有客户端和服务器端口号,需要创建一个客户端应用程序来将http状态发送到Web服务器,但防火墙团队只在客户端打开4900到4999端口。
有什么想法吗?
答案 0 :(得分:1)
如果您使用网络浏览器连接到您的服务器,那么您可能会运气不好但正如您在问题中所说的那样,您正在创建客户端应用程序,您可以使用bind
系统调用来执行此操作Windows和Linux(此代码在C中):
struct sockaddr_in client;
sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
memset(&client, 0, sizeof(client));
client.sin_family = AF_INET;
client.sin_addr.s_addr = htonl(INADDR_ANY);
client.sin_port = htons(4901);
然后拨打bind
:
res = bind(sock, (struct sockaddr *)&client, sizeof(client));
如果此调用成功(res为0),则可以将套接字连接到服务器,然后从端口4901进行连接。
答案 1 :(得分:0)
如果其他人需要它,这里是Python代码:
#!/usr/bin/env python
from socket import *
import time
HOST = '**.**.**.**' # IP of the server
PORT = 8080
GET = '/hello/There'
BUFSIZ = 1024
ADDR = (HOST, PORT)
sock = socket(AF_INET, SOCK_STREAM)
sock.bind(('',4925))
sock.connect(ADDR)
print 'connected'
request = """GET %s HTTP/1.0\n
Host: %s\n
User-Agent: Python\n
\n""" % (GET, HOST)
sock.send(request)
data = sock.recv(1024)
string = ""
while len(data):
string = string + data
data = sock.recv(1024)
print string
sock.close()
这适用于在另一端运行的wsgi服务器。挺直的。谢谢你的帮助。