首页 系统开发 TCP网络编程

TCP网络编程

[2018-12-02 21:12 类别:系统开发 阅读(372) ]

Tcp服务端

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * TCP服务端
 * @author Administrator
 *
 */
public class MyTcp {

	private BufferedReader reader;
	private ServerSocket serverSocket;
	private Socket socket;

	void getserver() {
		try {
			serverSocket = new ServerSocket(8898);
			System.out.println("服务器套接字已经创建成功");
			while (true) {
				System.out.println("等待客户端的链接");
				socket = serverSocket.accept();
				reader = new BufferedReader(new InputStreamReader(
						socket.getInputStream()));
				getClientMessage();
			}
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			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) {
		// TODO 自动生成的方法存根
		MyTcp tcp=new MyTcp();
		tcp.getserver();

	}

}


客户端

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 javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;

/**
 * 客户端
 * @author Administrator
 *
 */
public class MyClien extends JFrame{
	
	private PrintWriter writer;
	Socket socket;
	private JTextArea ta=new JTextArea();
	private JTextField tf=new JTextField();
	Container cc;
	
	public MyClien(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.print(tf.getText());
                  //将文本框的信息显示在文本域中
                  ta.append(tf.getText()+"\n");
                  ta.setSelectionEnd(ta.getText().length());
                  //将文本框清空
                  tf.setText("");
			}
		});
	}
	
	private void connect(){
		ta.append("尝试链接\n");
		try {
			socket=new Socket("127.0.0.1",8898);
			writer=new PrintWriter(socket.getOutputStream(),true);
			ta.append("完成链接\n");
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		MyClien clien=new MyClien("向服务器送数据");
        clien.setSize(200, 200);
        clien.setVisible(true);
        clien.connect();
	}

}


关于博主Jansens