Java 连接两台计算机(通过无线网络连接机器)
我坐在一个房间里,笔记本电脑与无线网络相连。 在我旁边,我的朋友正坐在另一台笔记本电脑旁,这台笔记本电脑也连接到同一个网络 我们希望使用套接字编程(eclipse/netbeans)连接笔记本电脑。我们怎样才能做到这一点?这就是我们迄今为止所做的:Java 连接两台计算机(通过无线网络连接机器),java,eclipse,sockets,network-programming,client-server,Java,Eclipse,Sockets,Network Programming,Client Server,我坐在一个房间里,笔记本电脑与无线网络相连。 在我旁边,我的朋友正坐在另一台笔记本电脑旁,这台笔记本电脑也连接到同一个网络 我们希望使用套接字编程(eclipse/netbeans)连接笔记本电脑。我们怎样才能做到这一点?这就是我们迄今为止所做的: 我的笔记本电脑上有一个客户端类。我的朋友在 她的(地址中有我笔记本电脑的IP) 我们已禁用两台笔记本电脑上的防火墙 我们已在两台笔记本电脑上手动打开6789端口 然后,我们首先在我的笔记本电脑上运行server类,然后运行客户端 她的课 这些是课程
她的(地址中有我笔记本电脑的IP)
她的课李> 这些是课程 服务器:
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)
线程“main”java.net.ConnectException:连接被拒绝:连接
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.PlainSocketImpl.doConnect(未知源)
位于java.net.PlainSocketImpl.connectToAddress(未知源)
位于java.net.PlainSocketImpl.connect(未知源)
位于java.net.socksocketimpl.connect(未知源)
位于java.net.Socket.connect(未知源)
位于java.net.Socket.connect(未知源)
位于java.net.Socket。(未知源)
位于java.net.Socket。(未知源)
位于Code1.TCPClient.main(TCPClient.java:18)
谁能告诉我我们做错了什么?我们的代码或程序中是否缺少某些内容?我们是否也需要先建立其他类型的联系?我们是否必须打开其他端口才能执行此操作?在两台笔记本电脑上使用不同版本的eclipse可以做到这一点吗 要创建客户端套接字,您需要使用服务器的IP地址,而不是您的IP地址
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(InetAddress.getByName("SERVER_IP"), 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();
}
}
用服务器的IP替换“服务器IP”。替换
Socket clientSocket = new Socket("IP of my laptop here", 6789);
与
键入:ipconfig
这将给出您机器的IP地址socketclientsocket=新套接字(,6789);
现在,无论哪台机器运行客户机代码,都需要传递服务器机器的IP地址,以便它能够相互连接。因此,如果您想与朋友聊天,在运行服务器类代码后,也可以运行客户机类代码。现在,你们都连接到服务器并可以聊天。一个好的测试是尝试从客户端计算机“ping”(Windows上的tracert)服务器的IP地址。这将告诉您是否存在路由问题和代码问题。
Socket clientSocket = new Socket(server Address, 6789);
Socket clientSocket = new Socket(<Here goes the IP address of the server machine>, 6789);