2010-07-16 3 views
1

Я работаю над некоторым программным обеспечением, которое состоит из сервера и клиентов на одной машине, которые обмениваются данными через локальные сокеты.Не удается связаться через сокет в Mac OS X

Сервер (написанный на Java) открывает java.net.ServerSocket на порте 9000, а клиентам (на Java или Python) приходится подключаться к localhost: 9000 для связи.

В Windows и Linux это работает нормально. В Mac OS X (10.6, Java 1.6.0) связь между сервером и клиентом отсутствует, хотя я не получаю никаких ошибок. Есть ли что-то, что мне нужно для кода по-другому для Mac или есть системные настройки, которые мне нужно изменить, чтобы заставить его работать?

Python клиент сниппет:

import socket 
from re import sub 

def main(server_address, port): 
    ''' 
    Connect to the server. 
    ''' 

    rclf = '\r\n' 
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
    s.connect((server_address,port)) 
    s.send("Version:1.0.0"+rclf) 
+0

Вы уверены, что сервер действительно связан с портом 9000? Например, xdebug также хочет использовать порт 9000. Doe это работает, если вы используете другой порт? –

+0

Это полный образец кода? Основной метод здесь не называется. – McJeff

+0

Это всего лишь фрагмент того, что в программе, и этот вопрос должен быть комментарием, а не ответом. – erjiang

ответ

0

Может быть, это будет полезно для кого-то, как я была очень похожая проблема на Mac OS с Java клиент не в состоянии открыть сокет для веб-сервера (Lighttpd обслуживания статического файла) : отсутствие брандмауэра; работает в веб-браузере и с инструментами CLI (curl и wget); то же самое для разных, нестандартных, бесплатных портов. Отключение поддержки IPv6 для веб-сервера разрешило проблему.

То, что произошло, не в моих силах, но до вышеупомянутого изменения не было записей в журнале доступа веб-сервера для запросов клиента Java. Кроме того,

80/tcp open PORT 

не будет появляться на nmap localhost листинг, хотя

tcp6  0  0 localhost.PORT   *.*     LISTEN 

появился на netstat -a листинга.

Конфигурация:

  • Mac OS: 10,6,
  • Java: 1.6.0_24, пытался x86 и amd64 версии.