package client;
import java.awt.EventQueue;
import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JTextField;
import javax.swing.LayoutStyle.ComponentPlacement;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.awt.Font;
public class Client {
private JFrame frame;
private JTextField textField;
JTextArea textArea;
private Socket s;
private OutputStream os;
private DataOutputStream dos;
Map<String, String> map = System.getenv();
private String name = map.get("USERNAME");
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Client window = new Client();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Client() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout(0, 0));
JButton linkServer = new JButton("\u8FDE\u63A5\u670D\u52A1\u5668");
linkServer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
linkServer();
}
});
frame.getContentPane().add(linkServer, BorderLayout.NORTH);
JPanel panel = new JPanel();
frame.getContentPane().add(panel, BorderLayout.CENTER);
panel.setLayout(new BorderLayout(0, 0));
JPanel panel_1 = new JPanel();
panel.add(panel_1, BorderLayout.SOUTH);
textField = new JTextField();
textField.setFont(new Font("宋体", Font.PLAIN, 18));
textField.setColumns(10);
JButton sendMsg = new JButton("\u53D1\u9001");
sendMsg.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
sendMsg();
}
});
GroupLayout gl_panel_1 = new GroupLayout(panel_1);
gl_panel_1.setHorizontalGroup(
gl_panel_1.createParallelGroup(Alignment.TRAILING)
.addGroup(gl_panel_1.createSequentialGroup()
.addComponent(textField, GroupLayout.DEFAULT_SIZE, 371, Short.MAX_VALUE)
.addPreferredGap(ComponentPlacement.RELATED)
.addComponent(sendMsg))
);
gl_panel_1.setVerticalGroup(
gl_panel_1.createParallelGroup(Alignment.TRAILING)
.addComponent(textField, GroupLayout.DEFAULT_SIZE, 33, Short.MAX_VALUE)
.addComponent(sendMsg, GroupLayout.DEFAULT_SIZE, 33, Short.MAX_VALUE)
);
panel_1.setLayout(gl_panel_1);
JScrollPane scrollPane = new JScrollPane();
panel.add(scrollPane, BorderLayout.CENTER);
textArea = new JTextArea();
scrollPane.setViewportView(textArea);
}
private void linkServer() {
// TODO Auto-generated method stub
try {
s = new Socket("127.0.0.1", 6666);
os = s.getOutputStream();
dos = new DataOutputStream(os);
MsgThread mt = new MsgThread(this, s);
Thread thread = new Thread(mt);
thread.start();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void sendMsg() {
// TODO Auto-generated method stub
try {
dos.writeUTF(name+"/"+textField.getText().toString());
Date now = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//可以方便地修改日期格式
String hehe = dateFormat.format( now );
textArea.append(hehe+" 我说:\n"+textField.getText().toString()+"\n");
textField.setText("");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
java+socket通信,多client和server
4星 · 超过85%的资源 需积分: 27 66 浏览量
2014-12-16
09:21:17
上传
评论 2
收藏 19KB ZIP 举报
LOVETTLOVETT
- 粉丝: 0
- 资源: 2
最新资源
- 【学生课程实验】汽车租赁系统设计与实现【源码+lw+部署文档+讲解】
- spire.doc.free-5.2.0.jar
- 阿里组件抽象,帮你了解设计系统基本流程
- Drongscreen.apk
- 浏览器缓存策略,帮你一图打通知识点
- office卸载残留清理工具
- flutter appflutter app
- 扫描全能王 2024-05-10 16.45.pdf
- 数字电路:异步触发器计数器分频器 Quartus II 环境Verilog HDL语言编程+仿真+开发板FPGACPLDEDA
- 简历-求职简历-word-文件-简历模版免费分享-应届生-高颜值简历模版-个人简历模版-简约大气-大学生在校生-求职-实习
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈