用java实现nc功能实例

这是一个Java编程实例,展示了如何实现类似nc(网络工具)的功能。通过创建Socket连接,实现了与指定主机和端口的数据交互。用户可以输入主机名、端口号,程序会进行连接并提供输入/输出流进行通信。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导读:
  /*
  socket编程实例
  一个用java实现nc的功能的小例子
  请各位高手指教:shengshuai@126.com
  */
  import java.net.*;
  import java.io.*;
  import javax.swing.event.*;
  import javax.swing.*;
  import java.awt.*;
  import java.awt.event.*;
  import javax.swing.UIManager;
  import javax.swing.plaf.metal.MetalLookAndFeel;
  public class fs
  {
  public fs()
  {
  fsframe Frame1 = new fsframe();
  
  Frame1.validate();
  
  Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  Dimension frameSize = Frame1.getSize();
  if (frameSize.height > screenSize.height)
  {
  frameSize.height = screenSize.height;
  }
  if (frameSize.width > screenSize.width)
  {
  frameSize.width = screenSize.width;
  }
  Frame1.setLocation((screenSize.width - frameSize.width)/2,(screenSize.height - frameSize.height)/2);
  //Frame1.setlocation(0,0);
  Frame1.setDefaultCloseOperation(3);
  Frame1.show();
  }
  public static void main(String[] args)
  {
  try
  {
  UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
  }catch(Exception e)
  {
  e.printStackTrace();
  }
  new fs();
  }
  }
  class fsframe extends JFrame
  {
  String indata = null;
  DataInputStream in;
  DataOutputStream out;
  Socket conn;
  
  JLabel la = new JLabel("请输入:");
  
  JButton lianjie = new JButton("连接");
  JButton act = new JButton("执行");
  
  JTextField hostfield = new JTextField("www.126.com",10);
  JTextField portfield = new JTextField("80",2);
  
  JTextArea log = new JTextArea(10,0);
  JTextArea input = new JTextArea(4,0);
  
  JPanel contorlpanel = new JPanel();
  JPanel inputPanel = new JPanel();
  
  JScrollPane logscrollpane = new JScrollPane();
  JScrollPane inputsrollpane = new JScrollPane();
  
  public fsframe()
  {
  
  setSize(Toolkit.getDefaultToolkit().getScreenSize().width/2,380);
  try
  {
  
  
  this.setResizable(false);
  this.getContentPane().setLayout(new BorderLayout());
  this.setBackground(Color.red);
  
  log.setText("");
  log.setEditable(false);
  logscrollpane.getViewport().add(log);
  this.getContentPane().add(logscrollpane,BorderLayout.NORTH);
  
  contorlpanel.setLayout(new FlowLayout());
  contorlpanel.add(la);
  contorlpanel.add(hostfield);
  contorlpanel.add(portfield);
  contorlpanel.add(lianjie);
  contorlpanel.add(act);
  this.getContentPane().add(contorlpanel,BorderLayout.CENTER);
  
  inputsrollpane.getViewport().add(input);
  this.getContentPane().add(inputsrollpane,BorderLayout.SOUTH);
  
  
  
  
  lianjie.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
  
  String host = hostfield.getText();
  int port = Integer.parseInt(portfield.getText());
  
  if(host.equals("")||(portfield.getText().equals("")))
  JOptionPane.showMessageDialog(null, "主机和端口为空!");
  
  log.append("正在连接……/n");
  
  try{
  
  conn = new Socket(InetAddress.getByName(host),port);
  in = new DataInputStream(conn.getInputStream());
  out = new DataOutputStream(conn.getOutputStream());
  log.append("已经连接至主机"+host+"端口:"+port+"/n");
  //while((indata=in.readLine())!="") log.append(indata);
  }catch(UnknownHostException un)
  {
  log.append("UnknownHostException:"+un+"/n");
  JOptionPane.showMessageDialog(null, un);
  }catch(IOException iod)
  {
  log.append("IOException:"+iod+"/n");
  JOptionPane.showMessageDialog(null,iod);
  }
  }
  });
  
  
  
  act.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent ac){
  
  try{
  
  log.append(input.getText()+"/n");
  out.writeBytes(input.getText());
  out.writeBytes("/n");
  input.setText("");
  if((indata=in.readLine())!="") log.append(indata);
  }catch(IOException iod)
  {
  log.append("IOException:"+iod+"/n");
  JOptionPane.showMessageDialog(null,iod);
  }
  
  }
  });
  
  
  
  }catch(Exception e)
  {
  log.append("Exception"+e);
  }
  }
  }
  /* socket编程实例 一个用java实现nc的功能的小例子 请各位高手指教:shengshuai@126.com*/ import java.net.*; import java.io.*; import javax.swing.event.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.UIManager; import javax.swing.plaf.metal.MetalLookAndFeel; public class fs{ public fs() { fsframe Frame1 = new fsframe(); Frame1.validate(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = Frame1.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } Frame1.setLocation((screenSize.width - frameSize.width)/2,(screenSize.height - frameSize.height)/2); //Frame1.setlocation(0,0); Frame1.setDefaultCloseOperation(3); Frame1.show(); } public static void main(String[] args) { try { UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel"); }catch(Exception e) { e.printStackTrace(); } new fs(); }} class fsframe extends JFrame{ String indata = null; DataInputStream in; DataOutputStream out; Socket conn; JLabel la = new JLabel("请输入:"); JButton lianjie = new JButton("连接"); JButton act = new JButton("执行"); JTextField hostfield = new JTextField("www.126.com",10); JTextField portfield = new JTextField("80",2); JTextArea log = new JTextArea(10,0); JTextArea input = new JTextArea(4,0); JPanel contorlpanel = new JPanel(); JPanel inputPanel = new JPanel(); JScrollPane logscrollpane = new JScrollPane(); JScrollPane inputsrollpane = new JScrollPane(); public fsframe() { setSize(Toolkit.getDefaultToolkit().getScreenSize().width/2,380); try { this.setResizable(false); this.getContentPane().setLayout(new BorderLayout()); this.setBackground(Color.red); log.setText(""); log.setEditable(false); logscrollpane.getViewport().add(log); this.getContentPane().add(logscrollpane,BorderLayout.NORTH); contorlpanel.setLayout(new FlowLayout()); contorlpanel.add(la); contorlpanel.add(hostfield); contorlpanel.add(portfield); contorlpanel.add(lianjie); contorlpanel.add(act); this.getContentPane().add(contorlpanel,BorderLayout.CENTER); inputsrollpane.getViewport().add(input); this.getContentPane().add(inputsrollpane,BorderLayout.SOUTH); lianjie.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ String host = hostfield.getText(); int port = Integer.parseInt(portfield.getText()); if(host.equals("")||(portfield.getText().equals(""))) JOptionPane.showMessageDialog(null, "主机和端口为空!"); log.append("正在连接……/n"); try{ conn = new Socket(InetAddress.getByName(host),port); in = new DataInputStream(conn.getInputStream()); out = new DataOutputStream(conn.getOutputStream()); log.append("已经连接至主机"+host+"端口:"+port+"/n"); //while((indata=in.readLine())!="") log.append(indata); }catch(UnknownHostException un) { log.append("UnknownHostException:"+un+"/n"); JOptionPane.showMessageDialog(null, un); }catch(IOException iod) { log.append("IOException:"+iod+"/n"); JOptionPane.showMessageDialog(null,iod); } } }); act.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ac){ try{ log.append(input.getText()+"/n"); out.writeBytes(input.getText()); out.writeBytes("/n"); input.setText(""); if((indata=in.readLine())!="") log.append(indata); }catch(IOException iod) { log.append("IOException:"+iod+"/n"); JOptionPane.showMessageDialog(null,iod); } } }); }catch(Exception e) { log.append("Exception"+e); } }}

本文转自
http://www.cn-java.com/www1/?action-viewnews-itemid-3211
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值