java网络通信一

来源:互联网 发布:600756浪潮软件腾讯网 编辑:程序博客网 时间:2024/06/06 21:21

下面介绍的是使用Socket实现网络通信的一个简单例子

客户端代码如下:

import java.awt.BorderLayout;import java.awt.EventQueue;import java.io.IOException;import java.net.InetAddress;import java.net.Socket;import java.net.UnknownHostException;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.border.EmptyBorder;public class ClientServerFrame extends JFrame {private JPanel contentPane;private Socket socket;private JTextArea textArea;/** * Launch the application. */public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {public void run() {try {ClientServerFrame frame = new ClientServerFrame();frame.setVisible(true);frame.connection();} catch (Exception e) {e.printStackTrace();}}});}/** * Create the frame. */public ClientServerFrame() {setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 449, 285);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));contentPane.setLayout(new BorderLayout(0, 0));setContentPane(contentPane);JScrollPane scrollPane = new JScrollPane();contentPane.add(scrollPane, BorderLayout.CENTER); textArea = new JTextArea();scrollPane.setViewportView(textArea);}    private void connection() throws UnknownHostException    {    textArea.append("尝试链接服务器\n");    try {socket=new Socket("202.206.212.74", 12345);textArea.append("完成链接\n");InetAddress address=socket.getInetAddress();String inIP=address.getHostAddress();int inPort=socket.getPort();//获得远程服务器地的端口InetAddress lochostAddress=socket.getLocalAddress();String locIp=lochostAddress.getHostAddress();int locPort=socket.getLocalPort();textArea.append("远程服务器地址:"+inIP+"\n");textArea.append("远程服务器端口号:"+inPort+"\n");textArea.append("本地客户端地址:"+locIp+"\n");textArea.append("本地客户端端口号:"+locPort+"\n");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}        }}



服务器端代码如下:

import java.awt.BorderLayout;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.border.EmptyBorder;public class ServerSocketFrame extends JFrame {private JPanel contentPane;private JTextArea textArea;private ServerSocket server;    private Socket socket;/** * Launch the application. */public static void main(String[] args) {//EventQueue.invokeLater(new Runnable() {//public void run() {//try {ServerSocketFrame frame = new ServerSocketFrame();frame.setVisible(true);frame.getServer();//} catch (Exception e) {//e.printStackTrace();//}//}//});}/** * Create the frame. */public ServerSocketFrame() {setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 300);setTitle("服务器");contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));contentPane.setLayout(new BorderLayout(0, 0));setContentPane(contentPane);JScrollPane scrollPane = new JScrollPane();contentPane.add(scrollPane, BorderLayout.CENTER);textArea= new JTextArea();scrollPane.setViewportView(textArea);}public void getServer(){try {server=new ServerSocket(12345);//server.setSoTimeout(5000);//设置链接超时时间为5秒textArea.setText("服务器建立成功\n");while(true){textArea.append("等待客户链接...\n");socket=server.accept();textArea.append("客户链接完成...\n");}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();JOptionPane.showMessageDialog(null,"链接超时");}}}


提示:运行时记得改下客户端的ip


原创粉丝点击