客户端 :
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class TalkClient extends JFrame{
private JPanel myPanel;
private JLabel enterLabel;
private JTextField enterField;
private JTextArea displayArea;
private DataOutputStream output;
private Socket socket;
public TalkClient() {
super("Client Port");
Container container = getContentPane();
myPanel = new JPanel();
myPanel.setLayout(new FlowLayout());
enterLabel = new JLabel("输入:");
enterField = new JTextField(20);
enterField.setEditable(true);
enterField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String message = enterField.getText();
sendData(message);
displayArea.setText(displayArea.getText() + message+'\n');
enterField.setText("");
}
});
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
disconnect();
System.exit(0);
}
});
myPanel.add(enterLabel);
myPanel.add(enterField);
container.add(myPanel,BorderLayout.NORTH);
displayArea = new JTextArea();
container.add(new JScrollPane(displayArea),BorderLayout.CENTER);
setSize(320, 180);
setVisible(true);
connect();
}
public void connect() {
try {
socket = new Socket("127.0.0.1",7777);
output = new DataOutputStream(socket.getOutputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void disconnect() {
try {
output.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
private void sendData(String str) {
//System.out.println(str);
try {
output.writeUTF(str);
output.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new TalkClient();
}
}
服务器端 :
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.rmi.server.SocketSecurityException;
import java.util.ArrayList;
import java.util.List;
public class TalkServer {
ServerSocket ss = null;
List<Client> clients = new ArrayList<Client>();
public static void main(String[] args) {
new TalkServer().start();
}
public void start() {
try {
ss = new ServerSocket(7777);
while(true) {
Socket socket = ss.accept();
Client client = new Client(socket);
System.out.println("连接上了");
new Thread(client).start();
clients.add(client);
}
} catch (IOException e) {
e.printStackTrace();
}
}
class Client implements Runnable {
private Socket socket;
DataInputStream dis = null;
DataOutputStream dos = null;
public Client(Socket socket) {
this.socket = socket;
try {
dis = new DataInputStream(socket.getInputStream());
dos = new DataOutputStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
try {
String str = dis.readUTF();
System.out.println(str);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
TalkToMe一种Google chrome助手,适用于视障互联网用户。 功能-向用户大声读取网页的内容-将网页上的内容分组为标题,段落内容和表格等类别,以便应用户的要求大声阅读每个类别-在不同选项卡中打开新网页-执行Google...
《TalkToMe: Twisted消息服务器与iOS 8客户端Swift实现详解》 本文将深入探讨一个名为"TalkToMe"的项目,该项目结合了Twisted消息服务器和使用Swift开发的iOS 8客户端应用。让我们逐步解析这个项目的核心知识点,...
跟我说话 一个使用HTML和CSS开发的简单Javascript... 为了实现我所学的知识,我做到了。 它试图回答所提出的问题。 由于它只能回答我教过的问题,因此答案非常有限。 仅使用JavaScript来获取答案并将其打印到显示器上。
TalkToMe API 使用Node to构建的API服务器,用于TalkToMe Web和Mobile。 阅读带有此URL的TalkToMe,以了解此API尝试实现的内容可以在这里找到该API Live文档:入门这些说明将为您提供在本地计算机上运行并运行的项目...
【Talk to Customer-crx插件】是一款专为LinkedIn用户设计的浏览器扩展程序,它主要功能是帮助用户将LinkedIn账户的cookie信息应用于talktocustomer.ai平台。这个插件旨在简化流程,自动化设置,使得用户能够在...
将mail.jar、soap.jar、activation.jar、xerces.jar放到tomcat/lib下面, tomcat运行时会自动加载tomcat/lib下的所有类库 ... Sorry, I don't speak via HTTP GET- you have to use HTTP POST to talk to me.
基于 Node.js(Express 和 Socket.io)的应用 ##API #####初始化 var stream = require ( 'talktome' ) . getStream ( ) ; #####Get 相机/音频缓冲流 stream . RTCIO ( ) . camera ;stream . RTCIO ( ) . audio ; ...
2015年春八年级英语下册 Unit 4 Why don't you talk to your parents Section B课件 (新版)人教新目标版
输入语音即可帮助您输入语音 永远忘了打字。 这是一个了不起的chrome插件,它将让您永远忘记“打字”。 当您只需要对着计算机说话时,为什么还要再输入一次,它将为您输入。 只需允许网页具有麦克风权限即可启用此...
POC(Push-to-talk)标准,也称为Push-to-Talk Over Cellular,是一种移动通信技术,它使得用户可以像对讲机一样即时通讯,无需按下通话键就能与另一方进行单向语音交流。这一功能在一些特定领域,如紧急服务、物流...
八年级英语下册 Unit 4 Why don’t you talk to your parents(Section A 1a-2d)导学案(无答案)(新版)人教新目标版
八年级英语下册 Unit 4 Why don’t you talk to your parents(Section B 1a-1e)导学案(无答案)(新版)人教新目标版
八年级英语下册 Unit 4 Why don’t you talk to your parents(Section A 3a-4c)导学案(无答案)(新版)人教新目标版
八年级英语下册 Unit 4 Why don’t you talk to your parents(Section B 2a-2e)导学案(无答案)(新版)人教新目标版
2014年春八年级英语下册《Unit4 Why don’t you talk to your parents》(第1课时)导学案(无答案) (新版)人教新目标版
八年级英语下册 Unit 4 Why don’t you talk to your parents(Section B 3b-self-check)导学案(无答案)(新版)人教新目标版
【金榜学案】2014版八年级英语下册 Unit 4 Why don’t you talk to your parents Section A (1a-2d)课件 (新版)人教新目标版