繁体   English   中英

在Eclipse中运行Socket编程代码

[英]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 ”)

在右侧,您将获得许多选项卡,如MainArgumentsjreClassPath等,因此现在单击此标签下方的“ Arguments ”,您将获得带有标签Program arguments:文本框Program arguments:在此文本框中,您需要传递命令行参数

对于多个值,请在argument values之间使用single space ,然后单击“ Apply按钮

像上述情况一样,您需要两次传递命令行参数。 因此,首先您为GreetingServer配置,然后为GreetingClient ,然后逐一applyrun

单击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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM