java socket如何实现聊天小程序

这篇文章给大家分享的是有关java socket如何实现聊天小程序的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

java socket如何实现聊天小程序

java socket如何实现聊天小程序

服务器

packagedemo04;
importjava.awt.BorderLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.net.ServerSocket;
importjava.net.Socket;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
importjavax.swing.JTextField;
importjavax.swing.ScrollPaneConstants;
publicclassownServer{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
newServer().launch();
}
}
classServer{
JFrameframe;
JTextAreataArea;
JTextFieldtfField;
JButtonsbButton;
DataInputStreamread;
DataOutputStreamwrite;
ServerSocketscServerSocket;
Socketsocket;

publicvoidlaunch(){
CreateUI();
CreateNetWork();
newServerWrite().start();
newServerRead().start();
}
publicvoidCreateUI(){
frame=newJFrame("MMServer");
JPanelPanle=newJPanel();
taArea=newJTextArea(15,25);
taArea.setLineWrap(true);
taArea.setWrapStyleWord(true);
taArea.setEditable(true);
JScrollPaneqScroller=newJScrollPane(taArea);
qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
tfField=newJTextField(20);
sbButton=newJButton("发送");
Panle.add(qScroller);
Panle.add(tfField);
Panle.add(sbButton);
frame.getContentPane().add(BorderLayout.CENTER,Panle);
frame.setSize(400,400);
frame.setVisible(true);
}
publicvoidclose()
{
try
{
write.close();
read.close();
socket.close();
scServerSocket.close();
}
catch(Exceptione)
{
System.exit(-1);
}
}
publicvoidCreateNetWork(){

try{
scServerSocket=newServerSocket(7780);
socket=scServerSocket.accept();
read=newDataInputStream(socket.getInputStream());
write=newDataOutputStream(socket.getOutputStream());
System.out.print("网络连接");

}catch(Exceptione){
//TODO:handleexception
e.printStackTrace();
}
}
classServerReadextendsThread{
publicvoidrun(){
while(true){
try{
Stringmessage=read.readUTF();
taArea.append("对方:"+message+"\n");
}catch(Exceptione1){
//TODO:handleexception
JOptionPane.showMessageDialog(taArea,"提示:服务端已经断开连接");

//e.printStackTrace();
//System.exit(-1);
return;
}
}
}
}
classServerWriteextendsThread{

publicvoidrun(){
tfField.addActionListener(newServerListen());
sbButton.addActionListener(newServerListen());
}
}
classServerListenimplementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
try{
Stringstr=tfField.getText();
tfField.setText("");
taArea.append("我:"+str+"\n");
write.writeUTF(str);

}catch(Exceptione2){
//TODO:handleexception
e2.printStackTrace();
}
}
}
}

客户端

packagedemo04;
importjava.awt.BorderLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.net.Socket;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTextArea;
importjavax.swing.JTextField;
importjavax.swing.ScrollPaneConstants;
publicclassownClient{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
newClient().launch();
}
}
classClient{
JTextAreataArea;
JTextFieldtfField;
JButtonsbButton;
DataInputStreamread=null;
DataOutputStreamwrite=null;
Socketsocket;
publicvoidlaunch(){
CreateUI();
CreatNetWork();
newClientRead().start();;
newClientWrite().start();;
}
publicvoidCreateUI(){
JFrameframe=newJFrame("MMClient");
JPanelPanle=newJPanel();
taArea=newJTextArea(15,25);
taArea.setLineWrap(true);
taArea.setWrapStyleWord(true);
taArea.setEditable(true);
JScrollPaneqScroller=newJScrollPane(taArea);
qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);

tfField=newJTextField(20);
sbButton=newJButton("发送");

Panle.add(qScroller);
Panle.add(tfField);
Panle.add(sbButton);

frame.getContentPane().add(BorderLayout.CENTER,Panle);
frame.setSize(400,400);
frame.setVisible(true);
}
publicvoidCreatNetWork(){
//TODOAuto-generatedmethodstub
try{
socket=newSocket("127.0.0.1",7780);
write=newDataOutputStream(socket.getOutputStream());
read=newDataInputStream(socket.getInputStream());
System.out.print("已建立网络连接");
}catch(Exceptione){
//TODO:handleexception
e.printStackTrace();
}
}
classClientReadextendsThread{

publicvoidrun(){
while(true){
try{
Stringmessage=read.readUTF();
taArea.append("对方:"+message+"\n");
}catch(Exceptione1){
//TODO:handleexception
JOptionPane.showMessageDialog(taArea,"提示:客户端已经断开连接");

//e.printStackTrace();
//System.exit(-1);
return;
}
}
}
}
classClientWriteextendsThread{

publicvoidrun(){

tfField.addActionListener(newClientListen());
sbButton.addActionListener(newClientListen());
}
}
classClientListenimplementsActionListener{
@Override
publicvoidactionPerformed(ActionEvente){
try{
Stringstr=tfField.getText();
tfField.setText("");
taArea.append("我:"+str+"\n");
write.writeUTF(str);

}catch(Exceptione2){
//TODO:handleexception
e2.printStackTrace();
}
}
}
}

感谢各位的阅读!关于“java socket如何实现聊天小程序”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

发布于 2021-05-30 14:06:58
收藏
分享
海报
0 条评论
167
上一篇:Java中怎么实现带GUI界面的猜数字游戏 下一篇:PHP如何配合fiddler抓包抓取微信指数小程序数据
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码