當前位置:首頁 » 操作系統 » 網路聊天室linux

網路聊天室linux

發布時間: 2022-05-13 12:32:49

Ⅰ 我想在自己的linux系統上弄個聊天室具體該怎麼操作

看了你的補充,是 web架設是非常簡單,可是安裝源碼更簡單啊 ,

第一 這種發布的都有安裝指南, 只要本地的a+p+m環境設置好了, 按照安裝指南一步一步來即可 ,比搭建web簡單多了
第二 源碼放到apache的DocumentRoot文件夾下面 默認的是 /var/www/
第三 具體的一般要修改 httpd.conf , 這個你找點網站部署的文章來看比較好 我也不發揮復制粘貼的功能了

_________________________________________________

呵呵 你的問題其實也就是搭建 apache + php + mysql 網站運行環境

Ⅱ 如何編寫linux聊天室

自從開始學linux網路編程後就想寫個聊天室,一開始原本打算用多進程的方式來寫,可是發覺進程間的通信有點麻煩,而且開銷也大,後來想用多線程能不能實現呢,於是便去看了一下linux里線程的用法,實際上只需要知道 pthread_create 就差不多了,於是動手開干,用了兩天時間,調試的過程挺痛苦的,一開始打算用純C來擼,便用簡單的數組來存儲客戶端的連接信息,可是運行時出現了一些很奇怪的問題,不知道是不是訪問了臨界資源,和線程間的互斥有關等等;奇怪的是,當改用STL的set或map時問題就解決了,但上網搜了下發現STL也不是線程安全的,至於到底是什麼問題暫時不想去糾結了,可能是其它一些小細節的錯誤吧。先貼上代碼:

首先是必要的頭文件 header.h:

#!/usr/bin/env python#-*- coding: utf-8 -*-from PyQt4 import QtGui, QtCoreimport sysimport socketimport threadclass Client(QtGui.QWidget):

BUF_LEN = 1024 def __init__(self, parent=None):

QtGui.QWidget.__init__(self, parent)

self.setWindowTitle(u'TCP客戶端')
self.resize(600, 500)
self.center()
layout = QtGui.QGridLayout(self)

label_ip = QtGui.QLabel(u'遠程主機IP:')
layout.addWidget(label_ip, 0, 0, 1, 1)
self.txt_ip = QtGui.QLineEdit('127.0.0.1')
layout.addWidget(self.txt_ip, 0, 1, 1, 3)

label_port = QtGui.QLabel(u'埠:')
layout.addWidget(label_port, 0, 4, 1, 1)
self.txt_port = QtGui.QLineEdit('9003')
layout.addWidget(self.txt_port, 0, 5, 1, 3)

self.isConnected = False
self.btn_connect = QtGui.QPushButton(u'連接')
self.connect(self.btn_connect, QtCore.SIGNAL( 'clicked()'), self.myConnect)
layout.addWidget(self.btn_connect, 0, 8, 1, 2)

label_recvMessage = QtGui.QLabel(u'消息內容:')
layout.addWidget(label_recvMessage, 1, 0, 1, 1)

self.btn_clearRecvMessage = QtGui.QPushButton(u'↓ 清空消息框')
self.connect(self.btn_clearRecvMessage, QtCore.SIGNAL( 'clicked()'), self.myClearRecvMessage)
layout.addWidget(self.btn_clearRecvMessage, 1, 7, 1, 3)

self.txt_recvMessage = QtGui.QTextEdit()
self.txt_recvMessage.setReadOnly(True)
self.txt_recvMessage.setStyleSheet('background-color:yellow')
layout.addWidget(self.txt_recvMessage, 2, 0, 1, 10)

lable_name = QtGui.QLabel(u'姓名(ID):')
layout.addWidget(lable_name, 3, 0, 1, 1)
self.txt_name = QtGui.QLineEdit()
layout.addWidget(self.txt_name, 3, 1, 1, 3)

self.isSendName = QtGui.QRadioButton(u'發送姓名')
self.isSendName.setChecked(False)
layout.addWidget(self.isSendName, 3, 4, 1, 1)

label_sendMessage = QtGui.QLabel(u' 輸入框:')
layout.addWidget(label_sendMessage, 4, 0, 1, 1)
self.txt_sendMessage = QtGui.QLineEdit()
self.txt_sendMessage.setStyleSheet("background-color:cyan")
layout.addWidget(self.txt_sendMessage, 4, 1, 1, 7)
self.btn_send = QtGui.QPushButton(u'發送')
self.connect(self.btn_send, QtCore.SIGNAL('clicked()'), self.mySend)
layout.addWidget(self.btn_send, 4, 8, 1, 2)

self.btn_clearSendMessage = QtGui.QPushButton(u'↑ 清空輸入框')
self.connect(self.btn_clearSendMessage, QtCore.SIGNAL( 'clicked()'), self.myClearSendMessage)
layout.addWidget(self.btn_clearSendMessage, 5, 6, 1, 2)
self.btn_quit = QtGui.QPushButton(u'退出')
self.connect(self.btn_quit, QtCore.

Ⅲ linux下做區域網聊天室會存在哪些bug

這個估計不是即時的,,用框架就是為了刷新一次SHOW.ASP,,, 建議你另外換一個吧,,,有很多是即時的, 以前在用艾恩上傳組件時候,看到他有出過聊天室,,你搜索一下:艾恩在線聊天室

Ⅳ linux下網路編程聊天室聯系人怎麼存儲

多種解決方案 1、簡單實現,用戶對用戶傳,可以通過p2p實現 2、如果想保存文件,首先將文件保存至伺服器,然後用戶通過伺服器提供地址進行下載

Ⅳ linux下基於udp協議的聊天室需要掌握什麼知識

系統啟動伺服器執行。伺服器完成一些初始化操作,然後進入睡眠狀態,等待客戶機請求。
在網路的某台機器上,用戶執行客戶機程序
客戶機進行與伺服器進程建立一條連接
連接建立後,客戶機通過網路向伺服器發出請求,請求某種服務。
伺服器接收到客戶機的請求後,根據客戶機請求的內容進行相應的處理,然後將處理結果返回。
伺服器斷開與客戶機的連接,繼續睡眠,等待其他客戶機的請求。

Ⅵ Linux中 socket聊天室,給客戶端發消息

//下面是一個實例
/**
*socket.iochat
*
*/

varweb=require('QuickWeb');

//undefined
var_=undefined;

/**
*創建一個房間
*
*@param{string}room房間名稱
*@param{socket.io}iosocket.io實例
*/
varRoom=mole.exports=function(room,io){
//初始化socket.io實例,僅在第一次創建房間時需要設置io參數
if(typeofio!='undefined')
Room.prototype.io=io;
vario=this.io;

//房間成員列表
varnicknames=this.nicknames={};
varonlinesum=this.onlinesum=0;

//握手驗證,如果是登錄用戶,則自動獲取其昵稱
io.set('authorization',function(handshakeData,callback){
//通過客戶端的cookie字元串來獲取其session數據
varsessionObject=handshakeData.sessionObject=web.session.getByCookie(handshakeData.headers.cookie);

//如果不是登錄用戶,則自動為其設置一個昵稱
varnickname=sessionObject.data.nickname;
if(typeofnickname!='string'||nickname=='')
nickname='#'+Math.floor(Math.random()*1000)+''+(newDate().getTime()%86400000);
sessionObject.data.nickname=nickname;

callback(null,true);
});

/**連接處理*/
varconnectionHandle=function(socket){
onlinesum++;
//獲取session
varsession=socket.handshake.sessionObject.data;
varnickname=session.nickname;

//保持session,以免session過期
varhold_session=socket.handshake.sessionObject.hold;

/**刷新在線列表*/
refresh_online=function(){
varn=[];
for(variinnicknames)
n.push(i);
socket.broadcast.emit('onlinelist',n);
socket.emit('onlinelist',n);
}

//新成員加入時,通知其他成員
nicknames[nickname]=socket;
refresh_online();
socket.broadcast.emit('systemmessage',nickname+'回來了,大家趕緊去噴他~~');

/**公共消息*/
socket.on('publicmessage',function(msg,cb){
hold_session();
vartimestamp=newDate().getTime();
socket.broadcast.emit('publicmessage',nickname,msg,timestamp);
cb();
});

/**私人消息*/
socket.on('privatemessage',function(to,msg,cb){
hold_session();
vartimestamp=newDate().getTime();
varerr='';
for(variinto){
vartarget=nicknames[to[i]];
if(target){
cb();
target.emit('privatemessage',nickname,msg,timestamp);
}
else{
err+='「'+to[i]+'」不在線 ';
}
}
if(err!='')
cb(err);
});

/**斷開來連接*/
socket.on('disconnect',function(){
deletenicknames[nickname];
onlinesum--;
socket.broadcast.emit('systemmessage',nickname+'悄悄地離開了。。。');
refresh_online();
});

/**命令*/
socket.on('command',function(args,cb){
if(args.length<1){
cb('無效的命令');
return;
}
switch(args[0]){
/*查詢或更改昵稱*/
case'nick':
varnick=args[1];
if(typeofnick=='undefined')
cb(_,'你的昵稱是:'+nickname);
else
if(nick==nickname)
cb('你的昵稱本來就是「'+nick+'」嘛,不需要改');
elseif(nicknameIsUsed(nick))
cb('昵稱「'+nick+'」已被佔用');
else{
nicknames[nick]=nicknames[nickname];
deletenicknames[nickname];
varoldnick=nickname;
session.nickname=nickname=nick;
cb(_,'昵稱已更改為「'+nick+'」');
//通知其他人
refresh_online();
socket.broadcast.emit('systemmessage','「'+oldnick+'」的昵稱已改為「'+nick+'」');
}
break;

/*在線人數*/
case'online':
cb(_,'當前共有'+onlinesum+'個人在線');
break;

/*幫助*/
default:
cb(_,strHelp);
}
});
}

/*注冊聊天室*/
if(typeofroom=='undefined')
room='';
io.of('/'+room).on('connection',connectionHandle);


/**檢查昵稱是否被佔用*/
varnicknameIsUsed=function(nickname){
for(variinnicknames)
if(i==nickname)
returntrue;
returnfalse;
}
}

varstrHelp='輸入$help獲取幫助
=========系統命令========
**$nick**[昵稱]查看或更改昵稱
**$online**當前在線人數
**$clear**清空消息
=========使用技巧========
**給某人發送消息**@對方昵稱消息內容(可同時@多個人)
**發送圖片**!圖片url
**發送鏈接**[網址]
';

Ⅶ 基於linux的網路聊天室怎樣實現雙機通信

1. 建議lz使用socket套接字。這個方式可以很好的實現client/server模式,tcp和udp協議都可以選擇。使用socket來實現兩台電腦的進程間通信,要先理解一些函數,如socket,binder,listen,connect,recv,send等等。。。
2. lz可以上網搜索關鍵字「linux socket編程」,或追問我。

Ⅷ linux 下怎樣使用qq等聊天工具聊天

windows 中可用 QQ、YY、阿里旺旺等多種聊天軟體聊天,那麼,在 linux 系統中怎樣進行聊天呢?不說不知道,其實在 linux 中,同樣有多種聊天帳號可供選擇。

1、啟動 linux 操作系統,進入桌面。

2、進入終端,鍵入命令 pidgin,回車。在這兒說明一下,一些常用的 linux 操作系統安裝完成後都自動安裝了這個軟體。如果提示沒有安裝,可以先進行安裝。

3、第一次啟動該軟體,會出現一個添加帳號向導,點擊「添加」。

4、在「添加帳號」窗口中,點擊協議選擇框。

5、在展開的選項中,我們選擇其中的一個。例如,以QQ為例。

6、接下來,輸入QQ帳號和密碼,然後點擊「添加」按鈕。

7、這時,QQ帳號便添加成功了。

8、我們關閉「添加」窗口,便可以登陸QQ了。

注意:

由於 linux 版的 QQ 最新版為 2008,目前已被官方禁止使用。如果想在 linux 中聊天,建議選擇添加其他帳號。謝謝閱讀,希望能幫到大家,請繼續關注,我們會努力分享更多優秀的文章。

Ⅸ 在linux環境下,運用C語言編程寫一個網路聊天室,不知道該如何下手,有的話就提供下呀要設計思想!

我做過一個windows下的C#寫的,可以私信給你,,不過說實話,什麼環境下代碼都差不多,用socket原語實現即可。。基本用不到鏈表。。你從網上搜些代碼,自己研究下吧。我覺得最多200行代碼就可以寫完伺服器端或者客戶端的。。如果要C#代碼,把QQ號留給我

熱點內容
linux命令速查手冊 發布:2024-10-10 03:27:54 瀏覽:9
android鎖屏廣播 發布:2024-10-10 03:21:41 瀏覽:579
上傳說的薩滿卡組 發布:2024-10-10 03:21:35 瀏覽:18
優酷視頻緩存文件 發布:2024-10-10 03:20:54 瀏覽:658
sqlutc時間 發布:2024-10-10 03:19:40 瀏覽:257
陰陽師舉報腳本 發布:2024-10-10 03:18:54 瀏覽:745
蘋果4s手機忘記id密碼怎麼辦 發布:2024-10-10 03:15:59 瀏覽:119
有哪些配置高的小型車 發布:2024-10-10 03:14:53 瀏覽:757
在網上買電腦怎麼選擇配置 發布:2024-10-10 02:46:45 瀏覽:339
控制邏輯演算法 發布:2024-10-10 02:32:22 瀏覽:756