Ⅰ java socket 和php 怎样实现聊天功能,求帮忙
[java]
view
plain
<span
style="font-size:16px;">package
demo.net;
import
java.io.DataInputStream;
import
java.io.DataOutputStream;
import
java.io.IOException;
import
java.net.ServerSocket;
import
java.net.Socket;
import
java.util.Scanner;
/**
*
模拟qq聊天功能:
实现客户端与服务器(一对一)的聊天功能,客户端首先发起聊天,输入的内容在服务器端和客户端显示,
*
然后服务器端也可以输入信息,同样信息也在客户端和服务器端显示
*/
//
服务器类
public
class
ChatServer
{
private
int
port
=
8189;//
默认服务器端口
public
ChatServer()
{
}
//
创建指定端口的服务器
public
ChatServer(int
port)
{
this.port
=
port;
}
//
提供服务
public
void
service()
{
try
{//
建立服务器连接
ServerSocket
server
=
new
ServerSocket(port);
//
等待客户连接
Socket
socket
=
server.accept();
try
{
//
读取客户端传过来信息的DataInputStream
DataInputStream
in
=
new
DataInputStream(socket
.getInputStream());
//
向客户端发送信息的DataOutputStream
DataOutputStream
out
=
new
DataOutputStream(socket
.getOutputStream());
//
获取控制台输入的Scanner
Scanner
scanner
=
new
Scanner(System.in);
while
(true)
{
//
读取来自客户端的信息
String
accpet
=
in.readUTF();
System.out.println(accpet);
String
send
=
scanner.nextLine();
System.out.println("服务器:"
+
send);
//
把服务器端的输入发给客户端
out.writeUTF("服务器:"
+
send);
}
}
finally
{//
建立连接失败的话不会执行socket.close();
socket.close();
}
}
catch
(IOException
e)
{
e.printStackTrace();
}
}
public
static
void
main(String[]
args)
{
new
ChatServer().service();
}
}
</span>
Ⅱ php+安卓实现类似QQ的即时聊天
您好,Bmob即时聊天demo包含了一个完整的即时通讯的App,功能包括:
支持好友管理功能,包括添加好友、删除好友、获取好友列表,也可以与你已有的用户系统完全解耦;
支持的消息类型:纯文本、聊天表情、图片、位置等;
支持会话的本地化存储;
自定义消息处理机制;
同一账号多处登陆强制下线;
支持消息回执发送:已发送、已阅读两种状态;
支持黑名单管理功能;
支持消息重发机制,由网络或者其他原因导致的消息发送失败皆可点击重发;
支持查看附近的人的功能;
支持语音聊天功能。
后期更新计划:
增加在线、离线状态的显示;
增加群聊模式,方便群管理;
Android界面效果在手机上安装Bmob_IM_test.apk(位于Bmob_IM_(version)_Demo\bin目录下),安装成功之后,立即可预览效果。
Ⅲ 用php去写如QQ,微信这样的聊天社交软件的服务端可行么
功能上是可以实现的,而且代码量更少,但是!核心问题就是如果你用php写的话用户少还没问题,用户多了,百万估计就不行了,消息延迟,卡死现象就多。用户体验就很差,就凉凉了。你个人玩或小范围还是可以的,而且现在有这种框架,workerman或swoole都可以。望采纳!
Ⅳ php能开发一个像QQ视频聊天功能的网站吗
可以开发出类似网页版qq的东西,我们网上看到的主播和我们进行交互,其实就是这种东西的应用,我们不可以用网页开直播,却可以和开直播的主播聊天
Ⅳ qq聊天机器人的原理
QQ聊天机器人(QQ chatterbot)是一个用来模拟人类对话或聊天的程序。“Eliza”和 “Parry”是早期非常着名的聊天机器人。它试图建立这样的程序:至少暂时性地让一个真正的人类认为他们正在和另一个人聊天。
qq聊天机器人的PHP原理
<?php
include"http_no_cookie.class.php";
classqq {
public$sid;
public$http;
public$qq_num;
function__construct() {
$this->http =newhttp_no_cookie;
}
functionlogin($qq_num,$qq_pwd) {
echo $data=$this->http->get("http://pt.3g.qq.com/");
$action= preg_match("/action=\"(.+)?\"/",$data,$matches);
$action=$matches[1];
$params=array();
$params["login_url"] ="http://pt.3g.qq.com/s?aid=nLogin";
$params["sidtype"] = 1;
$params["loginTitle"] ="手机腾讯网";
$params["bid"] = 0;
$params["qq"] =$qq_num;
$params["pwd"] =$qq_pwd;
$params["loginType"] =1;
echo$data=$this->http->post($action, http_build_query($params));
if(preg_match("/http:\/\/vc.gtimg.com\//",$data,$matches)){
echo"需要输入验证码";
return0;
exit;
}
if(preg_match("/密码错误/",$data,$matches)){
echo"密码错误";
return1;
exit;
}
$action= preg_match("/sid=(.+?)&/",$data,$matches);
$this->sid =$matches[1];
return$this->sid;
}
functionsendMsg($to_num,$msg,$sid= 0) {
$sid=$sid?$sid:$this->sid;
if(!$sid)
exit("sid值未传入进去");
$params=array();
$params["msg"] =$msg;
$params["u"] =$to_num;
$params["saveURL"] = 0;
$params["do"] ="send";
$params["on"] = 1;
$params["aid"] ="发送";
$url="http://q16.3g.qq.com/g/s?sid=".$sid;
echo$data=$this->http->post($url, http_build_query($params));
return$data;
}
functiongetMsg($qq_num= 0,$sid= 0) {
$qq_num=$qq_num?$qq_num:$this->qq_num;
if(!$qq_num)
exit("qq_num值未传入进去");
$sid=$sid?$sid:$this->sid;
if(!$sid)
exit("sid值未传入进去");
$url="http://q16.3g.qq.com/g/s?sid=".$sid."&3G_UIN=".$qq_num."&saveURL=0&aid=nqqChat";
$data=$this->http->get($url);
preg_match("/name=\"u\" value=\"(\d+)\"/",$data,$matches);
$result["qq"] =$matches[1];
$data=explode("<form",$data);
$data=$data[0];
preg_match_all("/<p>(.+)?<\/p>/",$data,$matches);
unset($matches[1][0]);
$result["content"] =$matches[1];
return$result;
}
functionlogout($sid){
$url="http://pt.3g.qq.com/s?sid=".$sid."&aid=nLogout";
echo$url;
echo$this->http->get($url);
}
functiongetFriendsList($qq_num= 0,$sid= 0){
$result=array();
$qq_num=$qq_num?$qq_num:$this->qq_num;
if(!$qq_num)
exit("qq_num值未传入进去");
$sid=$sid?$sid:$this->sid;
if(!$sid)
exit("sid值未传入进去");
$url="http://q16.3g.qq.com/g/s?aid=nqqchatMain&sid=".$sid."&myqq=".$qq_num;
while(true){
$i=1;
$url.="&p=".$i;
$data=$this->http->get($url);
preg_match_all("/u=(.+?)&/",$data,$matches);
foreach($matches[1]as$key=>$value){
$result[]=$value;
}
if(count($matches[1])<13)
break;
$i++;
}
return$result;
}
}
<?php
//PHP代码
classhttp_no_cookie {
private$curl;
public$user_agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13";
publicfunctionget($url) {
$this->curl = curl_init();
curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 8);
curl_setopt($this->curl, CURLOPT_URL,$url);
curl_setopt($this->curl, CURLOPT_HEADER, 0);
curl_setopt($this->curl, CURLOPT_USERAGENT,$this->user_agent);
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);
$data= curl_exec($this->curl);
curl_close($this->curl);
return$data;
}
publicfunctionpost($url,$params) {
$this->curl = curl_init();
curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 8);
curl_setopt($this->curl, CURLOPT_URL,$url);
curl_setopt($this->curl, CURLOPT_HEADER, 1);
curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($this->curl, CURLOPT_POST, 1);
curl_setopt($this->curl, CURLOPT_USERAGENT,$this->user_agent);
curl_setopt($this->curl, CURLOPT_POSTFIELDS,$params);
curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);
$data= curl_exec($this->curl);
curl_close($this->curl);
return$data;
}
}
?>