我試圖在java中的python和客戶端程序中實現一個簡單的服務器程序。通過套接字連接Python和Java
Python服務器運行良好。 Java客戶端編譯良好。但無法連接到Python服務器。
這是我server.py
import sys
import socket
HOST = ""
PORT = 8888
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("Socket created")
try:
s.bind((HOST, PORT))
except Socket.error as msg:
print("Bind failed.")
print("Error code: "+str(msg[0]))
print("Message: "+str(msg[1]))
sys.exit()
print("Socket bind complete")
s.listen(10)
print("Socket now listening")
while 1:
conn, addr = s.accept()
print("Connected with: "+addr[0])
print(str(addr[1]))
s.close()
這是我Client.java
文件:
import java.net.Socket;
import java.io.IOException;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888);
System.out.println("Connected");
socket.close();
System.out.println("Socket closed");
} catch(IOException exception) {
exception.printStackTrace();
}
}
}
Python的服務器監聽到端口8888。但Java客戶端無法連接。
這是輸出當我運行Client
:
java Client
和輸出:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at Client.connect(Client.java:84)
at Client.<init>(Client.java:65)
at Client.main(Client.java:301)
Error connecting to localhost at 5555
爲什麼不能連接?當我寫一個等效的Java server program
,它工作正常。
這是我的Java服務器:Server.java
import java.net.Socket;
import java.net.ServerSocket;
import java.net.InetAddress;
import java.io.IOException;
public class ChatServer {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(8888);
Socket socket = server.accept();
InetAddress ip = socket.getInetAddress();
System.out.println("Client connected: "+ip.getHostAddress());
socket.close();
} catch(IOException exception) {
exception.printStackTrace();
}
}
}
所以我的問題是短暫的:
爲什麼連接Client.java
到Server.java
,但不Server.py
?
任何幫助,將不勝感激。謝謝。
'連接被拒絕'表示Python服務器在客戶端期望的位置('localhost:8888')不可用。通過telnet連接到Python服務器(例如'telnet properHost 8888'),然後在Java客戶端中使用該主機。 – 2014-10-10 10:51:07