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程序设计基础的主要内容,如果未能解决你的问题,请参考以下文章
20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础