JAVA服务器与客户端的socket通信问题

JAVA服务器与客户端的socket通信问题,第1张

你可以在每个用户连上服务器端时,都发送一个消息,就是用4个字节表示是用户的ID,并将与用户通信的socket,用一个HashMap存储起来,而不是用LinkList。<ID,Socket>

后面如果A发送消息给C,就把A的前四个字节(即ID)取出来,在HashMap中找到与C通信的socket,然后把消息通过socket发送出去···· 这部分代码应该很容易实现的,Socket通信这东西,理清了思路就很好弄了~~

你的文件中的问题

// 会阻塞进程,直到有客户端连接上来为止

// 既然是直到有客户端连接上,那么就要弄明白哪个是与客户端连接的套接字

// sockClient就是与客户端连接的套接字

sockClient = accept(sockServer, (SOCKADDR)&addrClient, &len);

//接收并打印客户端数据

recv(sockClient, recvBuf, 100, 0);

printf("%s\n", recvBuf);

// 所以此处,应该把sockServer改为sockClient

send(/sockServer/sockClient, sendBuf, 100, 0);

PS:服务器客户端通信,是要保持服务器与客户端的连接。

而不能这样立即关闭,如果设置不对,立即关闭,缓冲区的数据是会丢失的。那客户端也就不会再收到数据了。

你可以加Sleep(10000);来测是通信过程

//关闭socket

closesocket(sockClient);

这个嘛得知道各自的ip和程序的编号

然后服务器绑定自己的ip和编号bind然后监听连接请求 listen 客户端申请所要链接的ip和对方的编号connect

这是tcp

udp就是都绑定各自的ip和程序的编号,谁主动connect,谁就是客户端,服务器端listen就行 ,这个传输数据快,但是不可靠,一般网页播放的媒体影音,就是用。

跨网段,这个不用你操心,协议已经考虑到了。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » JAVA服务器与客户端的socket通信问题

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情