TCP程序设计基础

Posted xingweikun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP程序设计基础相关的知识,希望对你有一定的参考价值。

InetAddress类

package 网络通信;

import java.net.*;
/*
 * InetAddress类
 * */
public class Address {

	public static void main(String[] args) {
		InetAddress ip;
		try {
			ip = InetAddress.getLocalHost();
			String localname = ip.getHostName();
			String localip = ip.getHostAddress();
			System.out.println("本机名:" + localname);
			System.out.println("本机IP地址:" + localip);
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}

	}

}

在这里插入图片描述

TCP网络程序

TCP服务器端程序

package 网络通信;

import java.io.*;
import java.net.*;

/**
 * 服务器端运行
 */

public class MyTcp {
	private BufferedReader reader;
	private ServerSocket server;
	private Socket socket;

	void getserver() {
		try {
			server = new ServerSocket(8998);
			System.out.println("服务器套接字已经创建成功");
			while (true) {
				System.out.println("等待客户机的连接");
				socket = server.accept();
				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) {
		MyTcp tcp = new MyTcp();
		tcp.getserver();

	}

}

客户端程序

注意IP地址,根据实际情况更改,否则会出错

package 网络通信;

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

import javax.swing.*;
import javax.swing.border.*;

public class MyClien extends JFrame { // 创建类继承JFrame类
	/**
	 * 客户端运行
	 */
	private static final long serialVersionUID = 1L;
	private PrintWriter writer; // 声明PrintWriter类对象
	Socket socket; // 声明Socket对象
	private JTextArea ta = new JTextArea(); // 创建JtextArea对象
	private JTextField tf = new JTextField(); // 创建JtextField对象
	Container cc; // 声明Container对象
	
	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.println(tf.getText());
				// 将文本框中信息显示在文本域中
				ta.append(tf.getText() + '\\n');
				ta.setSelectionEnd(ta.getText().length());
				tf.setText(""); // 将文本框清空
			}
		});
	}
	
	private void connect() { // 连接套接字方法
		ta.append("尝试连接\\n"); // 文本域中提示信息
		try { // 捕捉异常
			socket = new Socket("192.168.10.111", 8998); // (服务器端ip)实例化Socket对象
			writer = new PrintWriter(socket.getOutputStream(), true);
			ta.append("完成连接\\n"); // 文本域中提示信息
		} catch (Exception e) {
			e.printStackTrace(); // 输出异常信息
		}
	}
	
	public static void main(String[] args) { // 主方法
		MyClien clien = new MyClien("向服务器送数据"); // 创建本例对象
		clien.setSize(200, 200); // 设置窗体大小
		clien.setVisible(true); // 将窗体显示
		clien.connect(); // 调用连接方法
	}
}

运行步骤及结果

先运行服务器端代码

在这里插入图片描述

再运行客户端代码

在这里插入图片描述

在客户端弹出的窗体的输入框输入文字,然后回车

在这里插入图片描述

客户端输入的文字会在服务器端输出

在这里插入图片描述

以上是关于TCP程序设计基础的主要内容,如果未能解决你的问题,请参考以下文章

小程序基础13:模板

201555332盛照宗—网络对抗实验1—逆向与bof基础

Java语言基础之方法的设计

20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础

[vscode]--HTML代码片段(基础版,reactvuejquery)

JSP开发中的基础语法