当前位置:首页 » 操作系统 » 网络聊天室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号留给我

热点内容
集群服务器地址都是一样的吗 发布:2024-10-10 01:07:39 浏览:325
java怎么开平方 发布:2024-10-10 01:02:25 浏览:486
windowsserver更新服务器搭建 发布:2024-10-10 00:42:32 浏览:657
kz解压缩 发布:2024-10-10 00:27:19 浏览:668
方舟编译器呢 发布:2024-10-10 00:13:41 浏览:914
阿里云服务器安装图形 发布:2024-10-09 23:40:45 浏览:863
cb编译器怎么下 发布:2024-10-09 23:37:38 浏览:8
编译translation 发布:2024-10-09 23:24:23 浏览:10
服务器cpu能供多少电脑使用 发布:2024-10-09 23:05:21 浏览:352
算法和嵌入式 发布:2024-10-09 23:04:34 浏览:557