如何使用javasocket实现一个聊天小程序

这篇文章主要介绍“如何使用javasocket实现一个聊天小程序”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用javasocket实现一个聊天小程序”文章能帮助大家解决问题。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网络空间、营销软件、网站建设、朝阳网站维护、网站推广。

服务器

package demo04;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.DataInputStream;import java.io.DataOutputStream;import java.net.ServerSocket;import java.net.Socket;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.ScrollPaneConstants;public class ownServer { public static void main(String[] args) { // TODO Auto-generated method stub new Server().launch(); }}class Server{ JFrame frame; JTextArea taArea; JTextField tfField; JButton sbButton; DataInputStream read ; DataOutputStream write; ServerSocket scServerSocket;  Socket socket;  public void launch() { CreateUI(); CreateNetWork(); new ServerWrite().start(); new ServerRead().start(); }  public void CreateUI() { frame = new JFrame("MM Server"); JPanel Panle = new JPanel(); taArea = new JTextArea(15,25); taArea.setLineWrap(true); taArea.setWrapStyleWord(true); taArea.setEditable(true); JScrollPane qScroller=newJScrollPane(taArea);  qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);          qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); tfField = new JTextField(20); sbButton = new JButton("发送"); Panle.add(qScroller); Panle.add(tfField); Panle.add(sbButton);     frame.getContentPane().add(BorderLayout.CENTER,Panle);    frame.setSize(400,400);    frame.setVisible(true);  } public void close() { try {  write.close();  read.close();  socket.close();  scServerSocket.close(); } catch (Exception e) {  System.exit(-1); } }  public void CreateNetWork() {    try {   scServerSocket =new ServerSocket(7780);  socket= scServerSocket.accept();  read = new DataInputStream(socket.getInputStream());  write = new DataOutputStream(socket.getOutputStream());    System.out.print("网络连接");  } catch (Exception e) {  // TODO: handle exception  e.printStackTrace(); }  } class ServerRead extends Thread{ public void run() {   while (true) {   try {   String message = read.readUTF();   taArea.append("对方:"+message+ "\n");  } catch (Exception e1) {  // TODO: handle exception  JOptionPane.showMessageDialog(taArea, "提示: 服务端已经断开连接");    //e.printStackTrace();  //System.exit(-1);  return ;  }    } } }class ServerWrite extends Thread{  public void run() {  tfField.addActionListener(new ServerListen());  sbButton.addActionListener(new ServerListen()); } } class ServerListen implements ActionListener{ @Override public void actionPerformed(ActionEvent e) {  try {  String str = tfField.getText();  tfField.setText("");  taArea.append("我: " + str + "\n");  write.writeUTF(str);    } catch (Exception e2) {  // TODO: handle exception  e2.printStackTrace();  } }  } }

客户端

package demo04;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.DataInputStream;import java.io.DataOutputStream;import java.net.Socket;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.ScrollPaneConstants;public class ownClient { public static void main(String[] args) { // TODO Auto-generated method stub new Client().launch(); }}class Client{ JTextArea taArea; JTextField tfField; JButton sbButton; DataInputStream read = null; DataOutputStream write = null; Socket socket; public void launch() { CreateUI(); CreatNetWork(); new ClientRead().start();; new ClientWrite().start();; } public void CreateUI() { JFrame frame = new JFrame("MM Client"); JPanel Panle = new JPanel(); taArea = new JTextArea(15,25); taArea.setLineWrap(true); taArea.setWrapStyleWord(true); taArea.setEditable(true); JScrollPane qScroller = new JScrollPane(taArea); qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);  tfField = new JTextField(20); sbButton = new JButton("发送");  Panle.add(qScroller); Panle.add(tfField); Panle.add(sbButton);       frame.getContentPane().add(BorderLayout.CENTER,Panle);    frame.setSize(400,400);    frame.setVisible(true); } public void CreatNetWork() { // TODO Auto-generated method stub try {  socket = new Socket("127.0.0.1",7780);  write = new DataOutputStream(socket.getOutputStream());  read = new DataInputStream(socket.getInputStream());  System.out.print("已建立网络连接"); } catch (Exception e) {  // TODO: handle exception  e.printStackTrace(); } } class ClientRead extends Thread{  public void run() {    while (true) {   try {   String message= read.readUTF();   taArea.append("对方:"+message+ "\n");    } catch (Exception e1) {  // TODO: handle exception  JOptionPane.showMessageDialog(taArea, "提示: 客户端已经断开连接");    //e.printStackTrace();  //System.exit(-1);  return ;  }     } } }  class ClientWrite extends Thread{  public void run() {    tfField.addActionListener(new ClientListen());  sbButton.addActionListener(new ClientListen());  } }  class ClientListen implements ActionListener{ @Override public void actionPerformed(ActionEvent e) {  try {    String str = tfField.getText();  tfField.setText("");  taArea.append("我: " + str + "\n");  write.writeUTF(str);    } catch (Exception e2) {  // TODO: handle exception  e2.printStackTrace();  } }  } }

关于“如何使用javasocket实现一个聊天小程序”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。


文章题目:如何使用javasocket实现一个聊天小程序
文章地址:http://ybzwz.com/article/pospis.html