欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php android 聊天

王梓涵1年前8瀏覽0評論
Php和Android都是現代技術中使用非常廣泛的技術,在開發當中,兩者的結合可以達到非常好的效果。其中,聊天是一個非常重要的功能,為了實現這個功能,我們可以使用PHP和Android的結合來完成。 首先,我們來看看PHP的相關處理。在實現聊天功能中,PHP主要是用來處理聊天消息的傳遞,為了方便,我們可以使用類似websocket這樣的技術來實現消息傳遞。下面是一個簡單的PHP的websocket服務器示例:
class ChatServer {
private $clients = array();
public function __construct($host, $port){
echo "Server Started\n";
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
socket_listen($socket, 20) or die("Could not set up socket listener\n");
$this->clients[] = array('socket'=>$socket);
while (true) {
$this->checkSockets();
}
}
function checkSockets(){
$read = array();
$write = array();
$except = array();
foreach ($this->clients as $k=>$client) {
$read[$k] = $client['socket'];
}
socket_select($read, $write, $except, null);
foreach ($read as $socket) {
if ($socket == $this->clients[0]['socket']) {
$newSocket = socket_accept($socket);
$this->clients[] = array('socket'=>$newSocket);
$this->writeInSocket($newSocket, "enter login name:");
} elseif($socket != $this->clients[0]['socket']) {
$index = $this->findClientBySocket($socket);
$buffer = '';
$bytes = @socket_recv($socket, $buffer, 10240, 0);
if ($bytes === false) {
$this->removeClient($index);
continue;
}
}
}
}
上述代碼中,定義了一個ChatServer類,用來處理聊天信息的傳遞。在類中定義了一個clients數組,表示當前已連接到服務器的客戶端;在構造函數中創建socket,并將socket加入clients數組中。checkSockets方法會循環監測當前客戶端是否有數據可讀,如果有的話則統一處理。 接下來,我們來看看在Android中如何使用PHP的websocket實現聊天功能。首先,需要在Android中建立一個socket連接,連接到PHP服務器,代碼如下:
try {
InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
socket = new Socket(serverAddr, SERVER_PORT);
} catch (UnknownHostException e1) {
e1.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
上述代碼中,建立了一個socket連接,并連接到對應的IP地址和端口。 接下來,我們需要開啟一個線程,用來不斷地監聽服務器返回的消息。代碼如下:
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str = in.readLine();
if (str != null) {
Message message = new Message();
message.what = MSG_RECEIVED;
message.obj = str;
handler.sendMessage(message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
thread.start();
上述代碼中,線程會不停地監聽服務器返回的消息,并通過handler傳遞給UI線程進行處理。 最后,我們來實現一下聊天界面。這里簡單實現了一個聊天框和發送按鈕,代碼如下:
private void initViews() {
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String message = editContent.getText().toString();
new Thread(new Runnable() {
@Override
public void run() {
try {
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
});
}
上述代碼中,通過初始化視圖來監聽發送按鈕,當點擊發送按鈕時,會將當前文本框的內容發送到服務器端。 綜上,通過PHP的websocket和Android的socket配合,我們完成了一個簡單的聊天功能。當然,在實際開發中,還需要考慮更多的細節問題,比如消息傳遞的安全性、穩定性等等。但是,本示例可以給大家一個基本的思路和一個參考實現。