客户端:
package com.xr.lampsdk;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/**
* @Description: tcp 客户端
*/
public class MyClient extends JFrame implements ActionListener {
JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JPanel jp1 = null;
JScrollPane jsp = null;
PrintWriter pw = null;
public static void main(String[] args) {
new MyClient();
}
public MyClient() {
jta = new JTextArea();
jta.setLineWrap(true); //设置文本域中的文本为自动换行
jta.setForeground(Color.BLACK); //设置组件的背景色
jta.setFont(new Font("楷体", Font.BOLD, 28)); //修改字体样式
jta.setBackground(Color.WHITE); //设置按钮背景色
jsp = new JScrollPane(jta);
jtf = new JTextField(50);
jtf.setFont(new Font("楷体", Font.BOLD, 16)); //修改字体样式
// 注册回车事件
jtf.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
sendMessage();
}
}
});
jb = new JButton("发送");
jb.addActionListener(this);// 注册一个监听事件
Dimension preferredSize = new Dimension(80, 40); //设置尺寸
jb.setPreferredSize(preferredSize); //设置按钮大小
jp1 = new JPanel();
jp1.add(jtf);
jp1.add(jb);
this.add(jsp, BorderLayout.CENTER);
this.add(jp1, BorderLayout.SOUTH);
this.setTitle("chat client");
this.setSize(800, 800);
this.setVisible(true);
// 接收从服务端发送过来的消息
try {
Socket s = new Socket("192.168.10.33", 2222);
// Socket s = new Socket("127.0.0.1", 2222);
BufferedReader in = new BufferedReader(new InputStreamReader(s
.getInputStream()));
pw = new PrintWriter(s.getOutputStream(), true);
while (true) {
String info = in.readLine();
String str = null;
if (jta.getText() == null || "".equals(jta.getText())) {
str = "Server:" + info;
// Jacobtest.textToSpeech("Server说:" + info);
} else {
str = jta.getText() + "\r\nServer:" + info;
// Jacobtest.textToSpeech("Server说:" + info);
}
jta.setText(str);
jta.setCaretPosition(jta.getDocument().getLength());
}
} catch (IOException e) {
e.printStackTrace();
}
}
// 把信息给服务器端
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jb) {
sendMessage();
}
}
/**
* @throws
* @Description: 发送消息给服务器端
*/
public void sendMessage() {
String info = jtf.getText();
pw.println(info);
pw.flush();
jtf.setText("");
if (jta.getText() == null || "".equals(jta.getText())) {
jta.append("Client:" + info);
// Jacobtest.textToSpeech("Client说:" + info);
} else {
jta.append("\r\nClient:" + info);
// Jacobtest.textToSpeech("Client说:" + info);
}
jta.setCaretPosition(jta.getDocument().getLength());// 设置滚动条自动滚动
}
}
服务端:
package com.xr.lampsdk;
/**
* SDK灯控TCP客户端
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 全双工通信服务器端
*
* @Description: 服务端
*/
public class MyServer extends JFrame implements ActionListener {
JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JPanel jp1 = null;
JScrollPane jsp = null;
PrintWriter pw = null;
public static void main(String[] args) {
new MyServer();
}
public MyServer() {
jta = new JTextArea();
jta.setLineWrap(true); //设置文本域中的文本为自动换行
jta.setForeground(Color.BLACK); //设置组件的背景色
jta.setFont(new Font("楷体", Font.BOLD, 28)); //修改字体样式
jta.setBackground(Color.WHITE); //设置按钮背景色
jsp = new JScrollPane(jta);
jtf = new JTextField(50);
jtf.setFont(new Font("楷体", Font.BOLD, 16)); //修改字体样式
// 注册回车事件
jtf.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
sendMessage();
}
}
});
jb = new JButton("发送");
Dimension preferredSize = new Dimension(80, 40); //设置尺寸
jb.setPreferredSize(preferredSize); //设置按钮大小
jb.addActionListener(this);// 注册一个监听事件
jp1 = new JPanel();
jp1.add(jtf);
jp1.add(jb);
this.add(jsp, BorderLayout.CENTER);
this.add(jp1, BorderLayout.SOUTH);
this.setTitle("chat server");
this.setSize(800, 800);
this.setVisible(true);
// 接收从客户端发送过来的消息
try {
ServerSocket ss = new ServerSocket(2222);
Socket s = ss.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(s
.getInputStream()));
pw = new PrintWriter(s.getOutputStream(), true);// 写成pw = new PrintWriter(s.getOutputStream())会有问题
while (true) {
String info = in.readLine();
String str = null;
if (jta.getText() == null || "".equals(jta.getText())) {
str = "Server:" + info;
// Jacobtest.textToSpeech("Server说:" + info);
} else {
str = jta.getText() + "\r\nServer:" + info;
// Jacobtest.textToSpeech("Server说:" + info);
}
jta.setText(str);
jta.setCaretPosition(jta.getDocument().getLength());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 把信息给客户端
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == jb) {
sendMessage();
}
}
/**
* @throws
* @Description: 发送消息给客户端
*/
public void sendMessage() {
String info = jtf.getText();
pw.println(info);
pw.flush();
jtf.setText("");
if (jta.getText() == null || "".equals(jta.getText())) {
jta.append("Client:" + info);
// Jacobtest.textToSpeech("Client说:" + info);
} else {
jta.append("\r\nClient:" + info);
// Jacobtest.textToSpeech("Client说:" + info);
}
jta.setCaretPosition(jta.getDocument().getLength());// 设置滚动条自动滚动
}
}