[英]Running Socket Programming code in Eclipse
我已经在Socket Programming上编写了一个程序,并创建了一个客户端和一个服务器。 两者的代码如下:
客户:
import java.net.*;
import java.io.*;
public class GreetingClient
{
public static void main(String [] args)
{
String serverName = args[0];
int port = Integer.parseInt(args[1]);
try
{
System.out.println("Connecting to " + serverName
+ " on port " + port);
Socket client = new Socket(serverName, port);
System.out.println("Just connected to "
+ client.getRemoteSocketAddress());
OutputStream outToServer = client.getOutputStream();
DataOutputStream out =
new DataOutputStream(outToServer);
out.writeUTF("Hello from "
+ client.getLocalSocketAddress());
InputStream inFromServer = client.getInputStream();
DataInputStream in =
new DataInputStream(inFromServer);
System.out.println("Server says " + in.readUTF());
client.close();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
服务器:
import java.net.*;
import java.io.*;
public class GreetingServer extends Thread
{
private ServerSocket serverSocket;
public GreetingServer(int port) throws IOException
{
serverSocket = new ServerSocket(port);
serverSocket.setSoTimeout(10000);
}
public void run()
{
while(true)
{
try
{
System.out.println("Waiting for client on port " +
serverSocket.getLocalPort() + "...");
Socket server = serverSocket.accept();
System.out.println("Just connected to "
+ server.getRemoteSocketAddress());
DataInputStream in =
new DataInputStream(server.getInputStream());
System.out.println(in.readUTF());
DataOutputStream out =
new DataOutputStream(server.getOutputStream());
out.writeUTF("Thank you for connecting to "
+ server.getLocalSocketAddress() + "\nGoodbye!");
server.close();
}catch(SocketTimeoutException s)
{
System.out.println("Socket timed out!");
break;
}catch(IOException e)
{
e.printStackTrace();
break;
}
}
}
public static void main(String [] args)
{
int port = Integer.parseInt(args[0]);
try
{
Thread t = new GreetingServer(port);
t.start();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
现在,我无法在Eclipse中运行该程序,任何人都可以帮助我,该怎么做?
转到RunConfigurations..
并在RunConfiguration窗口的左窗格中的Java应用程序下单击类名(此处为“ GreetingClient
”)
在右侧,您将获得许多选项卡,如Main
, Arguments
, jre
, ClassPath
等,因此现在单击此标签下方的“ Arguments
”,您将获得带有标签Program arguments:
文本框Program arguments:
在此文本框中,您需要传递命令行参数
对于多个值,请在argument values
之间使用single space
,然后单击“ Apply
按钮
像上述情况一样,您需要两次传递命令行参数。 因此,首先您为GreetingServer
配置,然后为GreetingClient
,然后逐一apply
并run
单击GreetingServer.java
,然后右键单击鼠标并选择Run As-->Run Configuration..
然后转到Java Application
并单击
GreetingServer -->Argument--> 6000 -->apply and -->run
这样的输出
Waiting for client on port 6000...
现在单击GreetingClient.java
,然后右键单击鼠标并选择Run As-->Run Configuration..
然后转到Java Application
并单击
GreetingClient -->Argument--> 127.0.0.1 6000 -->apply and -->run
然后您将使您的应用程序运行并像这样输出
Connecting to 127.0.0.1 on port 6000
Just connected to /127.0.0.1:6000
Server says Thank you for connecting to /127.0.0.1:6000
Goodbye!
您可以明智地发送任何端口,只需记住端口号即可。 对于eclipse参数传递应该是免费的,您可以通过此链接
实际上,您需要在Eclipse-IDE中单独运行程序。 输出将在输出区域的下一个选项卡中彼此缩进。
我没有有关Eclipse的信息。
在Netbeans中,您需要单独运行Client.java文件。 然后,移至Server.java文件并单独运行。 您将在底部看到两个窗口-一个运行Client.java的窗口和另一个运行Server.java的窗口。 现在,将消息从客户端发送到服务器,反之亦然。
在ECLIPSE IDE中编辑您的命令行参数设置:
转到项目->运行->运行配置->参数。
将参数传递为
args [0] = 127.0.0.1 //本地主机
args 1 = 3000 //假设3000,您可以指定任何端口号。 但请注意它应该存在!
尝试先运行客户端程序,然后再在Netbeans中运行服务器程序,该程序将正常运行...
/*Server*/
import java.net.*;
import java.io.*;
public class MyServer
{
public static void main(String args[])throws Exception
{
ServerSocket ss=new ServerSocket(8100);
Socket s=ss.accept();
DataInputStream din=new DataInputStream(s.getInputStream());
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str="",str2="";
while(!str.equals("stop"))
{
str=din.readUTF();
System.out.println("clint Says"+str);
str2=br.readLine();
dout.writeUTF(str2);
dout.flush();
}
din.close();
s.close();
ss.close();
}
}
为此创建GUI。 您可以在其中编写输出的JFrame和JTexArea。 不要从Eclipse控制台执行此操作。 您可以在这里找到有用的信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.