【发布时间】:2017-05-08 05:04:21
【问题描述】:
我正坐在一个房间里,我的笔记本电脑已连接到无线网络。 在我旁边,我的朋友正坐在另一台笔记本电脑旁,该笔记本电脑也连接到同一网络。
我们想使用套接字编程(eclipse/netbeans)连接我们的笔记本电脑。我们应该怎么做?这是我们到目前为止所做的:
- 我的笔记本电脑上有一个客户端类。我的朋友有服务器类
她的(地址中包含我笔记本电脑的 IP)。 - 我们已禁用两台笔记本电脑上的防火墙。
- 我们已在两台笔记本电脑上手动打开端口 6789。
- 然后我们首先在我的笔记本电脑上运行服务器类,然后运行客户端
上她的课。
这些是类。
服务器:
package Connect1;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.*;
import java.net.*;
public class Server1
{
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true)
{
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
connectionSocket.close();
// welcomeSocket.close();
}
}
}
客户:
package Connect1;
import java.io.*;
import java.net.*;
import javax.swing.JOptionPane;
import java.util.Scanner;
class TCPClient {
public static void main(String argv[]) throws Exception
{
String sentence;
String modifiedSentence;
BufferedReader inFromUser =new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("IP of my laptop here", 6789);
DataOutputStream outToServer =new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer =new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
System.out.print("Enter characters to be capitalized: ");
sentence =inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println("FROM SERVER: " + modifiedSentence);
Scanner input=new Scanner(System.in);
//System.out.print("Do you want to enter again? Press '0' for 'yes' and '1' if 'No'.");
//i=input.nextInt();
}
}
我们得到这个错误:
Exception in thread "main" java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at Code1.TCPClient.main(TCPClient.java:18)
谁能告诉我我们做错了什么?我们的代码或程序中是否缺少某些内容?我们是否也需要先建立某种其他类型的连接?我们是否必须为此打开其他端口?这可以在两台笔记本电脑上使用不同版本的 eclipse 来完成吗?
【问题讨论】:
-
一个很好的测试是尝试从客户端计算机“ping”(Windows 上的跟踪)服务器的 IP 地址。这会告诉您是否存在路由问题和代码问题。
标签: java eclipse sockets network-programming client-server