int send( SOCKET s, const char FAR *buf, int len, int flags );
(1)参数buf是否一定是以'\0'结尾的? 如果不是的话,函数如何判断buf是否全部拷贝进s的缓冲区?
(2)如果buf是以'\0'结尾的字符串,最后的'\0'是不是也进入了socket的"消息体"呢? 可能这个消息体用的不是很恰当;
(3)关于参数len, 我看孙鑫的那本<VC++深入详解>里的例子:
send(sockClient, "this is lizi" ,strlen("this is lizi")+1 ,0);
这里的len=strlen()+1, 是不是也吧\0这个结束符放进了消息体?
int recv( SOCKET s, char FAR *buf, int len, int flags );
(1)recv的使用前先为buf申请足够的空间,比如这里char buffer[100],但是这样调用recv(sock,buffer,200,0)或者len是小于100的数,这样会出现什么情况?
(2)如果如下的代码:
char buffer[100];
recv(sock,buffer,100,0);
如何才能用buffer[]数组的下标操作receive的字节,(可能这里没描述清楚,比如实际收到了abcdef六个字节,那么buffer[6]~buffer[99]中不是有效数据,如何才能避免访问到buffer[6]之后的元素呢?)