草庐IT

Socket聊天

全部标签

php - 如何在 PHP 中获取此函数 socket_recv() 的最大长度

if(socket_recv($sock,$buf,2045,MSG_WAITALL)===FALSE){$errorcode=socket_last_error();$errormsg=socket_strerror($errorcode);die("Couldnotreceivedata:[$errorcode]$errormsg");}echo$buf;从上面的函数来看,它没有显示完整的消息,所以我试着像这样获取变量$buf的最大长度socket_recv($sock,$buf,strlen($buf),MSG_WAITALL)但不起作用。请帮助我谢谢和问候,

php - 存储聊天消息和文件的最佳方式

我想知道您如何看待将聊天消息存储在数据库中?我需要能够将其他内容(如文件或联系人)绑定(bind)到它们,使用数据库是我目前看到的最佳方式。文件也有同样的问题,因为他们可以绑定(bind)到聊天消息,我也必须将它们存储在数据库中..有了成千上万的消息和文件,我想知道性能下降和数据库大小。考虑到我将PHP与MySQL/Doctrine结合使用,您怎么看? 最佳答案 我认为只要您正确构建数据库,就可以在数据库中存储任何文本信息(姓名、消息历史记录等)。我曾在大型网站(每天访问量达数千公里)和电信公司工作,这些公司将有关其用户的信息(包括

php - 将消息从网络服务器发送到我智能手机上的移动聊天应用程序(如 WhatsApp、Viber 或 Kik)?

我想从我的网络服务器向我的智能手机发送通知,最好是通过WhatsApp、Viber或Kik等流行的移动聊天应用之一。是否有任何已知的文档或API或其他东西描述如何向这些客户端发送消息,例如使用PHP?请注意,我只需要能够向我自己的智能手机发送通知,因此需要特定信息来识别我的特定客户(例如手机号码或其他信息)就可以了。 最佳答案 有许多网络服务可让您发送和接收短信/通知。PHP本身不支持它自己。您可以使用Twilio之类的服务来执行此操作。您可以将消息发送到您自己的智能手机,甚至是friend的智能手机。安example:"Curio

php - stream_socket_client 在我的服务器上失败,无法了解有关错误的更多信息

这段代码:(https://github.com/stuffmc/Safari-Push-Notifications/blob/master/index.php#L195)stream_socket_client('ssl://gateway.push.apple.com:2195',$error,$errorString,60,STREAM_CLIENT_CONNECT,$streamContext);返回false,但没有错误。这意味着当我发送到/v1/push时,每个设备/token都会失败:(PHP文档说:Ifthevaluereturnedinerrnois0andthefu

【史上最简单webSocket】uniapp+webSocket 聊天室【客户端】

该教程基于uniapp封装组件webSocket进行讲解1、申请连接用法2、回调方法,打开socket用法作者的话3、发送消息法子1法子2作者的话uniapp地址:https://uniapp.dcloud.net.cn/api/request/websocket.htmlhttps://uniapp.dcloud.net.cn/api/request/socket-task.html这两个网址的api都有用到,接下来会进行讲解说明先讲一下整体的思路,也就是整个过程的走法和流程应该是怎么样的。1、申请连接2、回调方法,打开socket3、发送/接收处理消息等逻辑1、申请连接看上图,在WebSo

java - 在客户端 JAVA 中调用 socket.close() 时套接字不关闭服务器端

我在java中遇到套接字问题。我有一个ServerSocket正在监听accept()并为每个客户端请求生成线程。客户端和服务器之间的通信工作正常。我正在使用输入流从服务器线程中的客户端读取数据,例如:inputStream=mySocket.getInputStream();bytes=inputStream.read(buffer);我的问题是,如果我从客户端调用socket.close(),bytes=inputStream.read(buffer);的阻塞调用没有任何反应,它会继续阻塞。但是,如果我关闭来自服务器的套接字,它会起作用,然后客户端的inputStream.read

java - 如何理解java Socket-Permissions?

permissionjava.net.SocketPermission"192.168.1.1:31337","connect,accept,resolve";以下权限允许什么?我的应用程序是否允许仅接受来自192.168.1.1:31337(可能是外部客户端)的连接或接受到192.168.1.1:31337的连接(我的应用程序在192.168.1.1:31337上运行,“听”的区别在哪里'?). 最佳答案 如果您的代码是小程序或在Java安全管理器下运行,您需要明确授予它执行某些操作的权限。Inorderforaresourcea

Java 套接字错误 : Reading Strings from Socket's InputStream

我正在使用Socket与ServerSocket通信。字符串正在从服务器发送到我的套接字。每个不同的行都是一条消息,在解析时包含信息。要读取这些文本行,需要使用扫描器。问题在于数据“突飞猛进”。虽然Server在连续均匀的发送数据,但是client端的Scanner读取的数据好像有停顿,一下子读入一堆消息(30-40条),然后又停顿。它无限期地重复这个循环。如果我提高发送数据的速率,暂停的持续时间会减少;如果我放慢数据速度(每秒1条消息),错误仍然存​​在并且暂停变得很长。这几乎就好像Socket在将任何数据发送到Scanner之前等待其缓冲区溢出;然后刷新所有内容并再次等待溢出。但是

用于聊天应用程序的 Java nat 遍历

我正在尝试为我的网络类(class)创建一个Java聊天应用程序。截至目前,我一直在尝试连接到不同路由器后面的某个人。我现在拥有我的项目的方式是我有一个客户端程序和一个服务器程序。客户端程序首先登录到服务器程序,服务器程序将他们的IP和端口记录在数据库中,然后服务器返回他们的好友列表以及他们的IP和端口。然后客户端关闭与服务器的连接,并尝试使用服务器发回的信息连接到另一个客户端。到目前为止,我的程序只能连接到服务器并获取friend的IP和端口,但是当我使用这些值连接到其他客户端时,我无法连接。socket=newSocket();socket.setReuseAddress(true

java - 在服务于 Socket 连接的两个线程之间共享公共(public)数据

我在SO上看到很多类似的问题,但几乎没有一个在图片中有Socket。所以请花点时间阅读问题。我有服务器应用程序(使用ServerSocket)监听请求,当客户端尝试连接时,会创建新线程来为客户端提供服务(并且服务器返回监听模式以接收新请求).现在,我需要根据其他客户端发送到服务器的内容来响应一个客户端。示例:ServerSocket监听传入连接。客户端A连接,创建新线程为A服务。客户端B连接,创建新线程为B服务。A向服务器发送消息“HellofromA”。将此消息作为对客户端B的响应发送。我是整个“线程间通信”的新手。显然,上面提到的情况听起来很简单,但我描述这个是为了获得提示,因为我