一个简单的TCP网络程序,通过socket网络编程技术实现一台电脑向另一台电脑发送消息的功能

1.编写TCP服务器端程序,要想建立网络连接,必须先运行服务端程序,让服务端处于等待连接中

package com.demo3.pcpc;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {
    private BufferedReader reader;
    private ServerSocket server;
    private Socket socket;
    private int port;
    Scanner scan=new Scanner(System.in);
    void getserver(){
        try{
            System.out.println("请输入端口号:");
            port=scan.nextInt();
            server=new ServerSocket(port);
            System.out.println("套接字已经创建成功");
            while(true){
                System.out.println("等待客户机的连接");
                socket=server.accept();//实例化Socket对象
                reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));

                getClientMessage();
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    private void getClientMessage(){
        try{
            while(true){//如果套接字是连接状态
                //获得客户端信息
                System.out.println("客户机:"+reader.readLine());
            }
        }catch(Exception e){
            e.printStackTrace();
        }
        try{
            if(reader!=null){
                reader.close();//关闭流
            }
            if(socket!=null){
                socket.close();//关闭套接字
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] args){
        Server server=new Server();
        server.getserver();
    }
}

2.编写客户端程序

package com.demo3.pcpc;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;

public class Client extends JFrame{
    private String ipAddress;
    private int port;
    Scanner scan=new Scanner(System.in);
    private PrintWriter writer;
    Socket socket;
    private JTextArea ta=new JTextArea();
    private JTextField tf=new JTextField()

 

Container cc;
    public Client(String title){
        super(title);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        cc=this.getContentPane();//实例化对象
        final JScrollPane scrollPane=new JScrollPane();
        scrollPane.setBorder(new BevelBorder(BevelBorder.RAISED));
        getContentPane().add(scrollPane, BorderLayout.CENTER);
        scrollPane.setViewportView(ta);
        cc.add(tf, "South");
        tf.addActionListener(new ActionListener(){
            //绑定事件
            public void actionPerformed(ActionEvent e){
                //将文本框中的信息写入流
                writer.println(tf.getText());
                //将文本框中的信息显示在文本域中
                ta.append(tf.getText()+'\n');
                ta.setSelectionEnd(ta.getText().length());
                //tf.setText("");//将文本域清空
            }
        });
    }
    private void connect(){
        ta.append("尝试连接\n");
        try{
            System.out.println("请输入ip地址");
            ipAddress=scan.nextLine();
            System.out.println("请输入端口号");
            port=scan.nextInt();
            socket=new Socket(ipAddress,port);
            writer=new PrintWriter(socket.getOutputStream(),true);
            ta.append("完成连接\n");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] args){
        Client client=new Client("向服务器发送数据");
        client.setSize(400,400);
        client.setVisible(true);
        client.connect();
    }
}
 


 

 

 

 

你可能感兴趣的:(一个简单的TCP网络程序,通过socket网络编程技术实现一台电脑向另一台电脑发送消息的功能)