這很簡單談困吧,在服務(wù)器端維持一州指個hashtableIP,Socket之類的
創(chuàng)新互聯(lián)服務(wù)項目包括朝陽網(wǎng)站建設(shè)、朝陽網(wǎng)站制作、朝陽網(wǎng)頁制作以及朝陽網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,朝陽網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到朝陽省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
私聊不就是兩個對冊侍配應(yīng)IP的Socket通信問題
import java點虐 .*;
import java.io.*;
public class ClientSocket1 {
static Socket server;
public static void main(String[] args) throws Exception {
server = new Socket(InetAddress.getLocalHost(), 5678);
BufferedReader in = new BufferedReader(new InputStreamReader(
server.getInputStream()));
PrintWriter out = new PrintWriter(server.getOutputStream());
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String str = wt.readLine();
out.println(str);
out.flush();
if (str.equals("end")) {
break;
}
System.out.println(in.readLine());
}
server.close();
}
}
import java.io.*;
import java點虐 .*;
public class ServerSocket1 {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(5678);
while (true) {
Socket client = server.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(
client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
while (true) {
String str = in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if (str.equals("沒睜end"))
break;
}
client.close();
}
}
}
不完全枯虛歲,但是相似,反正用socket編程就譽咐能實現(xiàn)了
給你一個簡單的實現(xiàn)吧拍饑,注意一戚賀慎定要高敬先運行MyServer.java
//MyCilent.java
import java.io.*;
import java點虐 .*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyClient extends JFrame implements ActionListener{
JTextField tf;
JTextArea tx;
JButton bt;
PrintWriter out;
public MyClient(){
tf=new JTextField(20);
tx=new JTextArea();
tx.setLineWrap(true);
tx.setWrapStyleWord(true);
JPanel pan=new JPanel();
JScrollPane jsp=new JScrollPane(tx);
add(jsp,"Center");
bt=new JButton("SEND");
bt.addActionListener(this);
pan.add(tf);
pan.add(bt);
add(pan,"South");
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setTitle("THE CLIENT");
setSize(400,300);
setVisible(true);
try{
Socket socket=new Socket("127.0.0.1",1680);
out=new PrintWriter(socket.getOutputStream(),true);
InputStreamReader in = new InputStreamReader(socket.getInputStream());
BufferedReader sin=new BufferedReader(in);
String s;
while(true){
s=sin.readLine();
tx.append("#Server Said#: "+s+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt){
tx.append("@Client Said@: "+tf.getText()+"\n");
out.println(tf.getText());
tf.setText("");
}
}
public static void main(String[] args){
MyClient mct = new MyClient();
}
}
//MyServer.java
import java.io.*;
import java點虐 .*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyServer extends JFrame implements ActionListener{
JTextField tf;
JTextArea tx;
JButton bt;
JScrollPane jsp;
JPanel pan;
PrintWriter out;
public MyServer(){
tx=new JTextArea();
tx.setLineWrap(true);
tx.setWrapStyleWord(true);
jsp=new JScrollPane(tx);
tf=new JTextField(20);
bt=new JButton("SEND");
bt.addActionListener(this);
pan=new JPanel();
pan.add(tf);
pan.add(bt);
add(pan,"South");
add(jsp,"Center");
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setTitle("THE SERVER");
setSize(400,300);
setVisible(true);
try{
ServerSocket server = new ServerSocket(1680);
Socket socket = server.accept();
InputStreamReader in = new InputStreamReader(socket.getInputStream());
BufferedReader sin=new BufferedReader(in);
out=new PrintWriter(socket.getOutputStream(),true);
while(true){
String s=sin.readLine();
tx.append("@Client Said@: "+s+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt){
String st = tf.getText();
tx.append("#Server Said#: "+st+"\n");
out.println(st);
tf.setText("");
}
}
public static void main(String[] args){
MyServer msr = new MyServer();
}
}
Java實現(xiàn)聊天室可以采用網(wǎng)絡(luò)編程搏衡中的Socket和ServerSocket技術(shù)來實現(xiàn)。具體實現(xiàn)步驟如下:
服務(wù)器端創(chuàng)建ServerSocket對象,并指定一個端口號來監(jiān)聽客戶端的連接請求。
客戶端創(chuàng)建Socket對象,并指定服務(wù)器端的IP地址和端口號來連接服務(wù)器。
服務(wù)器端通過ServerSocket.accept()方法等待客戶端的連接請求,當(dāng)有新的連接請求到達時,創(chuàng)建一個新的線程來處理該客戶端的請求,并將該線程加入到線程池中。
客戶端連接服務(wù)器后,通過Socket.getInputStream()方法獲取輸入流,并通過Socket.getOutputStream()方法獲取輸出流,向服務(wù)器發(fā)送消息或接收來自服務(wù)器的消息。
服務(wù)器端通過線程池中的線程來處理客戶端的請求,服務(wù)器可以實現(xiàn)廣播功能,將接收到的客戶端消息轉(zhuǎn)發(fā)給其他所有客戶端,也可以實現(xiàn)點對點的私聊功能。
當(dāng)客戶端退出聊天室時,需要關(guān)閉相應(yīng)的Socket連接,并通知其他客戶端該客戶端已經(jīng)離開。
聊天室中的消息可以使用特定的格式進行編碼和解碼,以便服務(wù)器端和客戶端可以正確地解析和處理消息。
需要注意的是,在實現(xiàn)聊天室時需要考慮線程安全、消息編解碼、異常處理等問題,以確保聊天室的穩(wěn)定和可靠性。同時鄭亂,還需要進行充分喊銀檔的測試和優(yōu)化,以提高聊天室的性能和用戶體驗。