Java-Soket实现客户端与服务端双向通信

本文通过一个TCP编程实验,详细介绍了如何使用Java的Socket实现客户端和服务端的双向通信。代码中模拟了网络通信的层次结构,包括添加和去除头部、尾部信息,并展示了服务端和客户端的完整代码实现。
摘要由CSDN通过智能技术生成

最近做了一个TCP编程实验,对基于TCP的Socket编程有了新的体会。代码象征性的模拟实现网络通信中的层次结构。

发送时加入头,尾;接收时去掉头,尾。

代码比较简单,就不做太多解释,先运行服务端,再打开客户端。


实验代码如下:


服务端代码:

import java.net.*;


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


import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class MyTCP  extends JFrame
{

private BufferedReader reader;
private ServerSocket server;
private Socket socket,socket2;

private PrintWriter  writer;
private JTextArea ta=new JTextArea();
private JTextField tf=new JTextField();

Container cc;

public MyTCP(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)
{

sendMessage();
}



});
}
private void sendMessage() 
{

writer.println(appLayer(tf.getText()));
ta.setSelectionEnd(ta.getText().length());
tf.setText("");



}

//coding
private String appLayer(String s)
{
ta.append("Sour"+s+'\n');
return transLayer("H1-"+s);
}
private String transLayer(String s)
{
ta.append("App:"+s+'\n');
return IPLayer("H2-"+s);
}
private String IPLayer(String s)
{
ta.append("Trans:"+s+'\n');
return DLLayer("H3-"+s);
}
private String DLLayer(String s)
{
ta.append("IP:"+s+'\n');
return PhyLayer("H4-"+s+"-T1");
}
private String PhyLayer(String s)
{
ta.append("DateLink:"+s+'\n');
char[] strChar = s.toCharArray();
String result = "";
for (int i = 0; i < strChar.length; i++) {
result += Integer.toBinaryString(strChar[i]) + " ";
}
ta.append("Phy:"+result+'\n');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值