java 运行nc_用java实现nc功能实例

该博客展示了如何使用Java编程实现类似nc(网络工具)的功能。通过创建Socket连接,实现与指定主机和端口的通信,允许用户输入数据并显示接收到的响应。文章包含一个简单的Java GUI应用,用于输入主机名、端口号、执行连接和发送数据。
摘要由CSDN通过智能技术生成

导读:

/*

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、付费专栏及课程。

余额充值