服务器代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.nio.channels.AcceptPendingException;
public class MyTcp {
private BufferedReader reader; //这里采用缓冲读取的BUFFeredReader类;
private ServerSocket server; //这里表示建立服务器套接字,等待了客户端请求;
private Socket socket; //用于创建新的套接字用于表示与客户端进行了连接;
void getserver(){
try{
server =new ServerSocket(8998); //实例化Socket对象;
System.out.println("服务器套接字已经创建成功");
while(true){
System.out.println("等待与客户机的连接");
socket=server.accept(); //这里建立连接然后得到socket;
reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));//这里得到客户端的outputStream的信息流;
getClientMessage(); //对信息流进行处理并且对这个连接进行关闭;
}
}catch(Exception e){
e.printStackTrace();
}
}
private void getClientMessage(){
try{
while(true)
{
System.out.println("客户机内容"+reader.readLine());
}
}catch(Exception exception){
exception.printStackTrace();
}
try{
if(reader!=null){
reader.close();
}
if(socket!=null){
socket.close();
}
}catch(Exception exception){
exception.printStackTrace();
}
}
public static void main(String[] args) {
MyTcp tcp=new MyTcp();
tcp.getserver();
}
}
运行结果:
客户机代码:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.Socket;
import javax.swing.*;
public class MyClien extends JFrame{
private PrintWriter writer; //声明PrinterWriter对象
Socket socket; //声明Socket对象
private JTextArea ta=new JTextArea(); //创建控件
private JTextField tf=new JTextField(); //创建控件
Container container; //创建容器
public MyClien(String title){ //构造函数
super(title); //调用父类的构造
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置关闭模式
container=this.getContentPane(); //实例化对象
final JScrollPane scrollPane=new JScrollPane();
scrollPane.setViewportView(ta);
container.add(scrollPane,BorderLayout.CENTER);
scrollPane.setViewportView(ta);
container.add(tf,"South"); //将文本框放置在窗体的下部
tf.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
writer.println(tf.getText());
ta.append(tf.getText()+"\n");
ta.setSelectionEnd(ta.getText().length());
tf.setText(""); //将文本框清空
}
});
}
private void connect(){ //创建和服务器连接的方法
ta.append("尝试连接\n"); //ta控件的提示信息
try {
socket =new Socket("127.0.0.1",8998); //实例化一个套接字,构造函数写本机ip:127.X.X.X,端口8998
writer =new PrintWriter(socket.getOutputStream(),true);
ta.append("完成连接\n");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static void main(String[] args) {
MyClien clien=new MyClien("向服务器送数据");
clien.setSize(200,200);
clien.setVisible(true);
clien.connect();
}
}
运行:
声明:对于本文出现的任何疑问意见可评论或者加WX威信交流