0

Is it possible to force an web service client to talk from a specific range of port E.g. 4900- 4999 to a web server in port 80?

I understand now that there is client and server port numbers and need to create a client application to send http statuses to a web server but firewall team only opens ports 4900 to 4999 in the client.

Any ideas?

4

2 に答える 2

1

Webブラウザーを使用してサーバーに接続している場合は、運が悪い可能性がありますが、クライアントアプリケーションを作成しているという質問で述べた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から接続します。

于 2012-09-17T17:08:20.723 に答える
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サーバーで機能しています。かなり簡単です。助けてくれてありがとう。

于 2012-09-17T19:33:41.743 に答える