Ⅰ 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;
}
}
?>