日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java c 客户端_java基于C/S模式实现聊天程序(客户端)

發布時間:2024/7/23 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java c 客户端_java基于C/S模式实现聊天程序(客户端) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

經過這幾天對java的學習,用java做了這個計算機網絡的課程設計,基于C/S模式的簡單聊天程序,此篇文章介紹一些客戶端的一些東西。

先講一講此聊天程序的基本原理,客戶端發送消息至服務器,服務器收到消息之后將其轉發給連接服務器的所有客戶端,來自客戶端的消息中包含發件人的名字。

客戶端的主要功能是發送消息和接收消息,客戶端設置好了端口和服務器地址,并創立客戶端自己的套接字,用作和服務器通信的一個標識。布局就不多說了,主要說說監視器和兩個重要的線程:發送和接收。

監視器中,登錄按鈕觸發的功能是設置用戶名,并且建立和服務器的連接,同時還要創建接收線程,并使其開始運行。

下面說一說,發送和接收的線程:發送線程是建立數據輸出流,將想要文本輸入區中的消息以UTF字符串的形式寫入到數據流中,并且在發送成功后清空輸入框。并且該線程由“發送”按鈕觸發。

接收線程是在登錄之后就建立的,線程中建立輸入流,并且讀出流中的UTF字符串,將其顯示到文本展示區,就完成了信息的接收。

客戶端大致的功能和組成就是這些了,下一篇我將講一下有關服務器的東西。

界面展示:

package client;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

import java.util.*;

import javax.swing.*;

public class Client extends JFrame {

Socket clientsocket = null;

DataInputStream in = null;

DataOutputStream out = null;

JTextArea inputText;

String SerAddress = "192.168.1.100";

int SendPort = 8888;

JTextField NickName;

JTextArea textShow;

JButton button, setbutton;

public Client() { // 構造函數,創建一個布局并初始化

init();

setVisible(true);

setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

setBounds(480, 160, 340, 460);

setTitle("好好學習天天向上聊天室");

setResizable(false);

}

void init() { // 初始化函數,設置布局并且設置監視器

inputText = new JTextArea(4, 29);

button = new JButton(" 發送 ");

JLabel label = new JLabel("昵稱");

setbutton = new JButton(" 登錄 ");

textShow = new JTextArea(15, 29);

textShow.setEditable(false);

NickName = new JTextField(10);

inputText.setBackground(new Color(45, 210, 209));

setLayout(new FlowLayout());

getContentPane().setBackground(new Color(20, 85, 237));

add(new JScrollPane(textShow));

textShow.setBackground(new Color(45, 210, 209));

setbutton.setBackground(new Color(236, 134, 21));

button.setBackground(new Color(236, 134, 21));

NickName.setBackground(new Color(45, 210, 209));

label.setForeground(new Color(243, 243, 14));

add(label);

add(NickName);

add(setbutton);

add(new JScrollPane(inputText));

add(button);

setbutton.addActionListener(new ActionListener() { //添加監視器

public void actionPerformed(ActionEvent e) {

Thread readData;

Read read = null;

try {

clientsocket = new Socket();

read = new Read();

readData = new Thread(read);

if (clientsocket.isConnected()) {

} else {

InetAddress address = InetAddress.getByName(SerAddress);

InetSocketAddress socketAddress = new InetSocketAddress(

address, SendPort);

clientsocket.connect(socketAddress);

textShow.append(new java.text.SimpleDateFormat(

"yy-MM-dd HH:mm:ss").format(new Date())

+ "\n與服務器連接成功\n已登錄聊天室\n");

in = new DataInputStream(clientsocket.getInputStream());

out = new DataOutputStream(clientsocket

.getOutputStream());

read.setDataInputStream(in);

readData.start();

}

} catch (Exception e1) {

textShow.append(new java.text.SimpleDateFormat(

"yy-MM-dd HH:mm:ss").format(new Date())

+ "\n服務器連接失敗\n");

}

}

});

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

Send send = new Send();

Thread sendData = new Thread(send);

send.setDataOutputStream(out);

sendData.start();

}

});

addWindowListener(new WindowAdapter() { //響應關閉按鈕的功能

public void windowClosing(WindowEvent e) {

int option = JOptionPane

.showConfirmDialog(null, "親愛的你真的要離開聊天室么?",

" 好好學習,天天向上", JOptionPane.YES_NO_OPTION,

JOptionPane.QUESTION_MESSAGE);

if (option == JOptionPane.YES_OPTION)

System.exit(0);

}

});

} // init結束

class Read implements Runnable { //讀取輸入流的線程

DataInputStream in;

public void setDataInputStream(DataInputStream in) {

this.in = in;

}

public void run() {

String result;

while (true) {

try {

result = in.readUTF();

textShow.append(new java.text.SimpleDateFormat(

"yy-MM-dd HH:mm:ss").format(new Date())

+ "\n"

+ result);

} catch (IOException e) {

textShow.append(new java.text.SimpleDateFormat(

"yy-MM-dd HH:mm:ss").format(new Date())

+ "\n與服務器斷開連接\n");

break;

}

}

}

}

class Send implements Runnable { // 發送消息的輸出流線程

DataOutputStream out;

public void setDataOutputStream(DataOutputStream out) {

this.out = out;

}

public void run() {

String message = null;

message = NickName.getText() + ":" + inputText.getText() + "\n";

try {

out.writeUTF(message);

inputText.setText("");

} catch (Exception e2) {

textShow.append("發送失敗:未連接到服務器\n");

}

}

}

public static void main(String args[]) {

Client client = new Client();

}

}

上面即是這篇文章的內容,希望對各位的學習有所啟發,也希望大家多多支持學貓在線(shtml.net)。

本文來源:https://blog.csdn.net/h843653844/article/details/50412368

總結

以上是生活随笔為你收集整理的java c 客户端_java基于C/S模式实现聊天程序(客户端)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。