为什么我的socket只能bat 接收socket消息到一条消息

求大神指点,我的socket为何不能一直收发信息【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:620,199贴子:
求大神指点,我的socket为何不能一直收发信息收藏
Server.javapublic class Server {ServerSocketserverSServerThreadserverTbooleansign=
public static void main(String[] args) {
Server server = new Server ( );
server.startServer();//暂时设为自动启动
server.showmenu ( );
while ( true )
InputStreamReader reader = new InputStreamReader ( System.in );
BufferedReader br = new BufferedReader ( reader );
String chooce = br.readLine ( );
if ( &0&.equals ( chooce ) )
server.exitSystem ( );
if ( &1&.equals ( chooce ) )
server.startServer ( );
if ( &2&.equals ( chooce ) )
server.stopServer ( );
if ( &3&.equals ( chooce ) )
server.showmenu ( );
catch ( Exception e )
e.printStackTrace ( );
public void startServer ( )
if ( sign == true )
serverSocket = new ServerSocket ( 9999 );
serverThread = new ServerThread ( serverSocket );
serverThread.start ( );
System.out.println ( &\n 服务器--启动成功。\n& );
catch ( Exception e )
System.out.println ( &\n 服务器--启动失败!\n& );
System.out.println ( &\n 服务器--已经启动& );
public void stopServer ( )
if ( sign == false )
if ( serverThread != null )
serverThread.flag =// 关闭服务器线程
serverThread.serverSocket.close ( );
serverThread =
this.serverSocket.close ( );
System.out.println ( &服务器--关闭成功& );
catch ( IOException e )
System.out.println ( &服务器关闭出现异常!& );
e.printStackTrace ( );
System.out.println ( &服务器--未启动& );
public void exitSystem ( )
this.stopServer ( );
System.out.println ( &服务器线程关闭----退出程序& );
System.exit ( 0 );
//显示菜单
public void showmenu ( )
System.out.println ( &服务器菜单& );
System.out.println ( &请选择输入相应菜单对应的标号& );
System.out.println ( &1 启动服务器& );
System.out.println ( &2 关闭服务器& );
System.out.println ( &3 显示菜单& );
System.out.println ( &0 关闭程序& );
}}服务器线程类ServerThread.java
public class ServerThread extends Thread{ServerSocket serverSboolean flag =public ServerThread( ServerSocket serverSocket ){this.serverSocket = serverS}public void run( ){while( flag ){try{Socket socket = serverSocket.accept( );ServerThreadAgent serverThreadAgent = new ServerThreadAgent( socket );serverThreadAgent.start( );}catch( Exception e ){e.printStackTrace( );}}}}服务器代理类,处理输入输出ServerThreadAgent.javapublic class ServerThreadAgent extends Thread{
Spublic ServerThreadAgent ( Socket socket ){this.socket =}/*** 在代理线程中进行业务处理*/public void run ( ){try{
Object message = SocketUtil.readStream ( socket );// 接收信息System.out.println ( socket.getInetAddress ( ) + &发来信息:&+ message);String sendMessage = &信息已经收到。&;SocketUtil.writeStream ( sendMessage, socket );// 发送信息}catch ( Exception e ){e.printStackTrace ( );}}}
没想好买啥?奥特莱斯品牌爆款,满399减100返100,上奥莱,购划算!
客户端类public class Client {SClientThreadAgentclientThreadAbooleansign=public static void main ( String[] args ){Client client = new Client ( );client.startClientServer();InputStreamReader reader = new InputStreamReader ( System.in );BufferedReader br = new BufferedReader ( reader );try{client.showmenu ( );while ( true ){String menu = br.readLine ( );if ( &0&.equals ( menu ) ){client.exitSystem ( );}if ( &1&.equals ( menu ) ){client.showmenu ( );}if ( &2&.equals ( menu ) ){
for(int i=0;i&10;i++)client.send ( &发送一条信息--我来了哟!!!!!& );}if ( &3&.equals ( menu ) ){
new Landing();}System.out.println ( &输入错误!请查看菜单:& );}}catch ( Exception e ){e.printStackTrace ( );}}private void showmenu ( ){System.out.println ( &系统菜单& );System.out.println ( &1-------显示菜单& );System.out.println ( &0-------关闭程序& );System.out.println ( &2----发送信息& );System.out.println ( &3----开始游戏& );}private void exitSystem ( ){try{System.out.println ( &程序已经关闭。& );System.exit ( 0 );}catch ( Exception e ){e.printStackTrace ( );}}private void startClientServer ( ){try{
socket = new Socket ( &127.0.0.1&, 9999 );//socket = new Socket ( &192.168.1.36&, 9999 );clientThreadAgent = new ClientThreadAgent ( socket );clientThreadAgent.start ( );}catch ( Exception ee ){ee.printStackTrace ( );}}private void send ( String message ){
SocketUtil.writeStream ( message, socket );// 发送信息/*InetAddress iAddress=socket.getInetAddress();System.out.println(&----&+new String(iAddress.getAddress()));*/}}客户端线程类:public class ClientThreadAgent extends Thread{Spublic ClientThreadAgent ( Socket socket ){this.socket =/*System.out.println ( &连接服务器成功
IP: & + socket.getInetAddress ( ) + & 端口:&+ socket.getPort ( ) );*/}public void run ( ){try{Object message = SocketUtil.readStream ( socket );// 接收信息System.out.println (&client-run:& +message.toString() );//socket.close ( );}catch ( Exception e ){e.printStackTrace ( );}}}执行发信息功能 ---2服务器那边也只是收到一条信息就没接收了,问题出在哪完全不知道啊,感觉都齐全了
楼主 SocketUtil这个类的代码粘出来看下吧
public class SocketUtil {
public static Object readStream(Socket socket) throws IOException{
ObjectInputStream ois=
//BufferedReader br=
// String string=
ois=new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));//br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
Object ob=ois.readObject();//string=br.readLine();} catch (Exception e) {e.printStackTrace();}finally{//br.close();}
public static void writeStream(String s,Socket socket){
ObjectOutputStream oos=
try {//PrintWriter pw=new PrintWriter(socket.getOutputStream());//pw.println(s);//pw.flush();
oos=new ObjectOutputStream(new BufferedOutputStream(socket.getOutputStream()));
oos.writeObject(s);
oos.flush();
} catch (IOException e1) {e1.printStackTrace();}
网络编程还是用其他的吧,
你的客户端呢?
亲,问题已回答,请查看百度知道。
输出语句要输出换行符,以前写过,现在忘了,花了好长时间才弄明白,刚开始我也纳闷了,怎么收不到发送的数据,最后发现,没有换行符,怎么可能readLine呢。。。
登录百度帐号推荐应用新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
稍有积蓄, 积分 481, 距离下一级还需 19 积分
论坛徽章:0
我现在设置了一个socket读的超时如下:
iWaitCode=select(iRecvFd + 1, &fdR, NULL,NULL, &tvl);
& & & & & & & &
& & & & & & & & if (iWaitCode==-1){
& & & & & & & & & & & &
& & & & & & & & & & & & uWriteLog(&wait connect error"
& & & & & & & & & & & &
& & & & & & & & & & & &
& & & & & & & & }
& & & & & & & & else if(iWaitCode==0){
& & & & & & & & & & & &
& & & & & & & & & & & & uWriteLog(&wait connect time out"& & & & & & & && && &&&
& & & & & & & && && &&&
& & & & & & & & }
& & & & & & & & else{
& & & & & & & & & & & &&&if (FD_ISSET(iRecvFd,&fdR)) {& & & && &
memset(sTempBuf,0,N_MAX_SIZE);
& & & && && && && & & & & & & & iTempLen = recv(iRecvFd,sTempBuf,sizeof(sTempBuf),0);
& & & && && && && & & & & & & & if(iTempLen &0){
& & & & & & & & & & & & & & & & & & & & uWriteLog(&recv client request wait error"& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }
& & & && && && && & & & & & & & else if (iTempLen==0)
& & & && && && && & & & & & & & & & & & //uWriteLog(&recv a connect null request"
& & & && && && && & & & & & & & & & & & ;
& & & && && && && & & & & & & & else{
& & & & & & & && && && && & & & & & & & uWriteLog(&recv a connect request:%s&,sTempBuf);& & & && && && && && && && && & & & & & & & & &
& & & & & & & && && && && & & & & & & & iRecvLen +=iTempL
& & & & & & & && && && && & & & & & & & strcat(sRecvBuf,sTempBuf);& & & &
& & & & & & & && && && && & & & & & & & if (iRecvLen&;max_cmd_len)
& & & & & & & && && && && & & & & & & & & & & & iTooLen=1;
& & & && && && && & & & & & & & }
。。。。。
第一次recv包前,会等待超时的时间,但是在recv包后,再一次等待recv包后
会一直接收到空包,就是recv返回的长度为0,不知道是什么情况
我的操作系统是solaris,请教一下如何解决?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
论坛徽章:1
我的socket一直接收到空包,怎么回事?
&;&;“再一次等待 recv 包后....”
没看到你在哪儿“再一次 recv”了。
另:网络通信程序的行为,是受收发两方影响的。
稍有积蓄, 积分 481, 距离下一级还需 19 积分
论坛徽章:0
我的socket一直接收到空包,怎么回事?
不好意思,我这个程序比较长,我有个循环一直在处理接收的包的
就是接收到包后,处理完后,再接收包,还是到上面的代码。
论坛徽章:1
我的socket一直接收到空包,怎么回事?
现在关心的就是没有你没有贴出来的那一部分代码。
select 每次执行前,必须重新初始化 iRecvFd,你做了吗?
稍有积蓄, 积分 481, 距离下一级还需 19 积分
论坛徽章:0
我的socket一直接收到空包,怎么回事?
void DealPack(int iRecvFd){
& & & & char sRecvBuf[N_MAX_SIZE],sSendBuf[N_MAX_SIZE],sTempBuf[N_MAX_SIZE];
& & & & char sUnitBuf[1024];& & & & & & & &
& & & & DICTINFO sDictInfo,*psDictInfo=&sDictI& & & &
& & & & int iRecvLen,iSendLen,iReturn=0,iCmdNo=0,iTempL
& & & & int iRecvError=0,iTooLen=0,iWaitError=0,iWaitCode,nF
& & & & char max_cmd_char[20];
& & & & char max_time_char[20];
& & & & char min_time_char[20];
& & & & int max_cmd_
& & & & int max_time_
& & & & int min_time_
& & & & char *p;
& & & & while(iCmdNo!=4){
& & & & & & & & memset(sRecvBuf,0,sizeof(sRecvBuf));
& & & & & & & & memset(sSendBuf,0,sizeof(sSendBuf));
& & & & & & & & iRecvLen=0;& & & && && && &&&
& & & && && &&&iRecvError=0;
& & & && && &&&iWaitError=0;
& & & && && &&&iTooLen=0;
& & & & & & & &
& & & & & & & & GetParmValue(6,max_cmd_char);
& & & & & & & & GetParmValue(7,max_time_char);
& & & & & & & & GetParmValue(5,min_time_char);
& & & & & & & & max_cmd_len=atoi(max_cmd_char);
& & & & & & & & max_time_len=atoi(max_time_char);
& & & & & & & & min_time_len=atoi(min_time_char);& & & & & & & &
& & & & & & & &
& & & & & & & & fd_set&&fdR;&&
& & & & & & & &
& & & & & & & & FD_ZERO(&fdR);&&
& & & && && &&&FD_SET(iRecvFd, &fdR);&&
& & & & & & & &
& & & & & & & & struct&&&&
& & & & & & & & tvl.tv_sec=max_time_
& & & & & & & & tvl.tv_usec=0;
& & & & & & & & struct timeval min_
& & & & & & & & min_tvl.tv_sec=min_time_
& & & & & & & & min_tvl.tv_usec=0;& & & && && &&&
& & & & & & & &
& & & & & & & & /*
& & & && && &&&if ((nFlags = fcntl(iRecvFd, F_GETFL, 0)) & 0)
& & & & & & & & {& & & & & & & & & & & &
& & & & & & & & & & & & close(iRecvFd);
& & & & & & & & & & & &
& & & & & & & & }
& & & && && & & & nFlags |= O_NONBLOCK;
& & & && && &&&if (fcntl(iRecvFd, F_SETFL, nFlags) & 0)
& & & & & & & & {& & & & & & & & & & & & & & & &
& & & & & & & & & & & & close(iRecvFd);
& & & & & & & & & & & &
& & & & & & & & }
& & & & & & & & */
& & & && && &&&
& & & & & & & & //接收指令开始
& & & & & & & & iWaitCode=select(iRecvFd + 1, &fdR, NULL,NULL, &tvl);
& & & & & & & &
& & & & & & & & if (iWaitCode==-1){
& & & & & & & & & & & &
& & & & & & & & & & & & uWriteLog(&wait connect error"
& & & & & & & & & & & &
& & & & & & & & & & & &
& & & & & & & & }
& & & & & & & & else if(iWaitCode==0){
& & & & & & & & & & & &
& & & & & & & & & & & & uWriteLog(&wait connect time out"& & & & & & & && && &&&
& & & & & & & && && &&&
& & & & & & & & }
& & & & & & & & else{
& & & & & & & & & & & &&&if (FD_ISSET(iRecvFd,&fdR)) {& & & && && && && && && && && & & & & &
& & & && && && && & & & & & & & memset(sTempBuf,0,N_MAX_SIZE);
& & & && && && && & & & & & & & iTempLen = recv(iRecvFd,sTempBuf,sizeof(sTempBuf),0);
& & & && && && && & & & & & & & if(iTempLen &0){
& & & & & & & & & & & & & & & & & & & & uWriteLog(&recv client request wait error"& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & }
& & & && && && && & & & & & & & else if (iTempLen==0)
& & & && && && && & & & & & & & & & & & //uWriteLog(&recv a connect null request"
& & & && && && && & & & & & & & & & & & ;
& & & && && && && & & & & & & & else{
& & & & & & & && && && && & & & & & & & uWriteLog(&recv a connect request:%s&,sTempBuf);& & & && && && && && && && && & & & & & & & & &
& & & & & & & && && && && & & & & & & & iRecvLen +=iTempL
& & & & & & & && && && && & & & & & & & strcat(sRecvBuf,sTempBuf);& & & &
& & & & & & & && && && && & & & & & & & if (iRecvLen&;max_cmd_len)
& & & & & & & && && && && & & & & & & & & & & & iTooLen=1;
& & & && && && && & & & & & & & }
& & & & & & & && && && &}
& & & & & & & & }
& & & & & & & &
& & & && && &&&//如果没有以&\r&结尾
& & & && && &&&while(*(sRecvBuf+strlen(sRecvBuf)-1)!='\r'){
& & & && && &&&& & & &
& & & && && &&&& & & & FD_ZERO(&fdR);
& & & && && &&&& & & & FD_SET(iRecvFd, &fdR);
& & & & & & & & & & & & //长度超过指定大小,发送返回
& & & && && &&&& & & & if (iRecvLen&;max_cmd_len){& & & && && &&&& & & & & & & &
& & & && && &&&& & & & & & & & iTooLen=1;
& & & && && &&&& & & & & & & &
& & & && && &&&& & & & }
& & & && && &&&& & & &
& & & & & & & & & & & & //接收下一个指令超时时间
& & & & & & & & & & & &
& & & && && &&&& & & & iWaitCode=select(iRecvFd + 1, &fdR, NULL,NULL, &min_tvl);
& & & && && &&&& & & & if (iWaitCode==-1){
& & & && && &&&& & & & & & & & uWriteLog(&wait request error"
& & & && && &&&& & & & & & & & iWaitError=1;
& & & & & & & && && && && && &
& & & && && &&&& & & & }
& & & & & & & & & & & & else if(iWaitCode==0){
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & uWriteLog(&wait request time out"
& & & & & & & && && && && && &
& & & & & & & && && && && && &
& & & & & & & & & & & & }
& & & & & & & & & & & & else{
& & & & & & & & & & & & & & & & if (FD_ISSET(iRecvFd,&fdR)) {& && && && && &&&& & & &
& && && && && && && && && & & & & & & & memset(sTempBuf,0,N_MAX_SIZE);
& && && && && && && && && & & & & & & & iTempLen = recv(iRecvFd,sTempBuf,sizeof(sTempBuf),0);
& && && && && && && && && & & & & & & & if(iTempLen &0){
& & & & & & & & & & & & & & & & & & & & & & & & uWriteLog(&recv client request error"
& & & & & & & & & & & & & & & & & & & & & & & & iRecvError=1;
& & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & & }
& && && && && && && && && & & & & & & & else if(iTempLen==0)
& && && && && && && && && & & & & & & & & & & & //uWriteLog(&recv a null request"
& && && && && && && && && & & & & & & & & & & & ;
& && && && && && && && && & & & & & & & else{
& & & && && && && && && && && & & & & & & & & & uWriteLog(&recv a request:%s&,sTempBuf);& & & & & & & && && && && && && && && & & & & & & & & &
& & & && && && && && && && && & & & & & & & & & iRecvLen +=iTempL
& & & && && && && && && && && & & & & & & & & & strcat(sRecvBuf,sTempBuf);
& & & && && && && && && && && & & & & & & & & & if (iRecvLen&;max_cmd_len){
& & & & & & & && && && && & & & & & & & & & & & & & & & iTooLen=1;
& & & & & & & && && && && & & & & & & & & & & & & & & &
& & & && && && && && && && && & & & & & & & & & }
& & & && && && && && && && && & & & & & & & & & if (strncmp(sTempBuf,&SEQUNCE&,strlen(&SEQUNCE&quot)==0)
& & & && && && && && && && && & & & & & & & & & & & & &
& && && && && && && && && & & & & & & & }
& && && && && && && && && & & & }
& & & & & & & & & & & & }
& & & & & & & & & & & &
& & & && && &&&& & & &
& & & && && &&&}
& & & && && &&&/*uaWriteLog(&iRecvLen:%d&,iRecvLen);*/
& && & & & & & & & uWriteLog(&recv all request:%s&,sRecvBuf);& & & && && &&&
& && & & & & & & &
& & & && && &&&if (iWaitError==1)
& & & && && &&&& & & &
& & & && && &&&& & & &
& & & && && &&&if (iRecvError==1)
& & & && && &&&& & & &
& & & && && &&&if (iTooLen==1){
& & & && && &&&& & & &
& & & && && &&&& & & & FmtRetInfo(sSendBuf,-9,&指令太长&,&"& & & & & & & & & & & & & & & &
& && &&&& & & & & & & & iSendLen=send(iRecvFd,sSendBuf,strlen(sSendBuf),0) ;& &
& && &&&& & & & & & & & & & & &
& & & & & & & & & & & & if(iSendLen&0){& & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & uWriteLog(&send too len info to client error&); & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }
& & & & & & & & & & & & uWriteLog(&End a request:%s&,sSendBuf);
& & & & & & & & & & & &
& & & && && &&&}
& & & && && &&&p = sRecvB& & & & & & & &
& & & & & & & & while(p != NULL)
& & & & & & & & {& & & & & &
& & & & & & & & & & & & memset(sUnitBuf,0,sizeof(sUnitBuf));
& & & & & & & & & & & & p = getItemStr(p, sUnitBuf,&SEQUNCE&);
& & & & & & & & & & & &
& & & & & & & & & & & & uWriteLog(&get a request:%s&,sUnitBuf);& & & & & & & &&&& & & && && &&&
& & & & & & & & & & & & SetStartTime();& && && && && && &&&& & & & & & & &
& & & & & & & & & & & & setProcStatus(gst_logoninfo.iProcessId,2);
& & & & & & & & & & & & setProcTime(gst_logoninfo.iProcessId,time(0));
& & & & & & & & & & & &
& & & & & & & & & & & & memset(psDictInfo,0,sizeof(psDictInfo));& & & & & & & & & & & &
& & & & & & & & & & & &
& & & & & & & & & & & & iReturn=PrepareExp(iRecvFd,sUnitBuf,&iCmdNo,sSendBuf,psDictInfo);
& & & & & & & & & & & & if (iCmdNo==4)
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & iSendLen=send(iRecvFd,sSendBuf,strlen(sSendBuf),0) ;
& & & & & & & & & & & & if(iSendLen&0){& & & & & & & & & & & & & & & & & & & & & & & & & & & &
& & & & & & & & & & & & & & & & uWriteLog(&send normal info to client error&); & & & & & & & & & & & &
& & & & & & & & & & & & & & & &
& & & & & & & & & & & & }& & & & & & & &
& & & & & & & & & & & &
& & & & & & & & & & & & uWriteLog(&End a request:%s&,sSendBuf);
& & & & & & & & & & & & setProcStatus(gst_logoninfo.iProcessId,3);
& & & & & & & & & & & & setProcTime(gst_logoninfo.iProcessId,time(0));
& & & & & & & & & & & &
& & & & & & & & & & & &
& & & && && &&&}
& & & && && & & & & &
& & & & & & & &
& & & & close(iRecvFd);
这个是我的代码,帮忙看看,谢谢。
家境小康, 积分 1080, 距离下一级还需 920 积分
论坛徽章:0
我的socket一直接收到空包,怎么回事?
表示对方已关闭。
稍有积蓄, 积分 481, 距离下一级还需 19 积分
论坛徽章:0
我的socket一直接收到空包,怎么回事?
因为客户端也是我写的,对方应该没有关闭,
而且我测出来后,如果对方关闭,我这边应该是<0
这个问题好象很奇怪的。
白手起家, 积分 13, 距离下一级还需 187 积分
论坛徽章:0
我的socket一直接收到空包,怎么回事?
你上面的代码太乱 没仔细看 你的数据包里是否有包长度?
白手起家, 积分 13, 距离下一级还需 187 积分
论坛徽章:0
我的socket一直接收到空包,怎么回事?
大概看了下 感觉你是把一个大包分几次发 你说我的理解对不对呢?
如果是这样 为什么不一次发完 然后一次收完?
稍有积蓄, 积分 481, 距离下一级还需 19 积分
论坛徽章:0
我的socket一直接收到空包,怎么回事?
也不是分几次发啦,就是有可能客户端发过来有几个包,我要分解一下而已。现在我收的时候就是以“\r”结尾做为一条指令。
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处2013年10月 Web 开发大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 socket接收消息 的文章

 

随机推荐