//服务器代码如下:
// server.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include "winsock.h"
#include "stdio.h"
#include "stdlib.h"int main(int argc, char* argv[])
{
int sock,length;
struct sockaddr_in server;
int msgsock;
char buf[1024];
int rval; WORD wVersionRequested;
WSADATA wsaData; wVersionRequested = MAKEWORD(2,0);
int err=WSAStartup(wVersionRequested,&wsaData);
//如果不能初始化WinSock,退出
if(err==-1){
perror("WSAStartup");
exit(1);
} //调用socket函数,建立自己的套接口
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock<0){
perror("Opening stream socket");
exit(1);
} server.sin_family = AF_INET;
server.sin_port = htons(7016);
server.sin_addr.s_addr=INADDR_ANY; //调用bingd()函数建立服务器本地的绑定
if(bind(sock,(const struct sockaddr*)&server,sizeof(server))<0){
perror("binding stream socket");
exit(1);
}
length=sizeof(server);
//getsockname()函数获取一个套接口的本地名字
if(getsockname(sock,(struct sockaddr*)&server,&length)<0){
perror("GETING socket name");
exit(1);
}
printf("socket port #%d\n",ntohs(server.sin_port)); //调用listen()函数,表示开始侦听
listen(sock,5);
do{
//通过accept()调用等待接受连接
msgsock=accept(sock,0,(int*)0);
printf("Have client connected.\n");
if(msgsock==-1)
perror("accept");
else
do{
memset(buf,0,sizeof(buf));
//调用recv函数接收数据
if((rval=recv(msgsock,buf,1024,MSG_OOB))<0)
{
if(rval==WSAEINPROGRESS)
printf("Hello 1\n");
if(rval==WSAENETRESET)
printf("Hello 2\n");
if(rval==WSAENOTSOCK)
printf("Hello 3\n");
if(rval==WSAEOPNOTSUPP)
printf("Hello 4\n");
perror("reading stream message");
getchar();
exit(1);
}
else if(rval==0)
printf("ending connection\n");
else
printf("--->%s\n",buf);
}while(rval!=0);
//调用函数closesocket()关闭套接口
closesocket(msgsock);
}while(1); WSACleanup(); printf("server stop !\n");
return 0;
}//客户端代码
// client.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include "winsock.h"
#include "stdio.h"
#include "stdlib.h"int main(int argc, char* argv[])
{
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2,0); int err=WSAStartup(wVersionRequested,&wsaData);
if(err==-1){
perror("WSAStartup");
exit(1);
}
int sock,length,msgsock;
struct sockaddr_in server;
char buf[]="This is test."; sock=socket(AF_INET,SOCK_STREAM,0);
if(sock<0){
perror("Opening stream socket");
exit(1);
} server.sin_family=PF_INET;
server.sin_port = htons(7016);
server.sin_addr.s_addr=inet_addr("10.105.200.45");
msgsock=connect(sock,(struct sockaddr*)&server,sizeof(server)); length=sizeof(buf);
//调用send函数发送数据
int rval=send(sock,buf,length,MSG_OOB);
if(rval!=length){
perror("Sending stream error");
getchar();
exit(1);
} closesocket(msgsock);
WSACleanup();
return 0;
}///////////////////////////////请路过的人帮忙看看呀!
// server.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include "winsock.h"
#include "stdio.h"
#include "stdlib.h"int main(int argc, char* argv[])
{
int sock,length;
struct sockaddr_in server;
int msgsock;
char buf[1024];
int rval; WORD wVersionRequested;
WSADATA wsaData; wVersionRequested = MAKEWORD(2,0);
int err=WSAStartup(wVersionRequested,&wsaData);
//如果不能初始化WinSock,退出
if(err==-1){
perror("WSAStartup");
exit(1);
} //调用socket函数,建立自己的套接口
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock<0){
perror("Opening stream socket");
exit(1);
} server.sin_family = AF_INET;
server.sin_port = htons(7016);
server.sin_addr.s_addr=INADDR_ANY; //调用bingd()函数建立服务器本地的绑定
if(bind(sock,(const struct sockaddr*)&server,sizeof(server))<0){
perror("binding stream socket");
exit(1);
}
length=sizeof(server);
//getsockname()函数获取一个套接口的本地名字
if(getsockname(sock,(struct sockaddr*)&server,&length)<0){
perror("GETING socket name");
exit(1);
}
printf("socket port #%d\n",ntohs(server.sin_port)); //调用listen()函数,表示开始侦听
listen(sock,5);
do{
//通过accept()调用等待接受连接
msgsock=accept(sock,0,(int*)0);
printf("Have client connected.\n");
if(msgsock==-1)
perror("accept");
else
do{
memset(buf,0,sizeof(buf));
//调用recv函数接收数据
if((rval=recv(msgsock,buf,1024,MSG_OOB))<0)
{
if(rval==WSAEINPROGRESS)
printf("Hello 1\n");
if(rval==WSAENETRESET)
printf("Hello 2\n");
if(rval==WSAENOTSOCK)
printf("Hello 3\n");
if(rval==WSAEOPNOTSUPP)
printf("Hello 4\n");
perror("reading stream message");
getchar();
exit(1);
}
else if(rval==0)
printf("ending connection\n");
else
printf("--->%s\n",buf);
}while(rval!=0);
//调用函数closesocket()关闭套接口
closesocket(msgsock);
}while(1); WSACleanup(); printf("server stop !\n");
return 0;
}//客户端代码
// client.cpp : Defines the entry point for the console application.
//#include "stdafx.h"
#include "winsock.h"
#include "stdio.h"
#include "stdlib.h"int main(int argc, char* argv[])
{
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD(2,0); int err=WSAStartup(wVersionRequested,&wsaData);
if(err==-1){
perror("WSAStartup");
exit(1);
}
int sock,length,msgsock;
struct sockaddr_in server;
char buf[]="This is test."; sock=socket(AF_INET,SOCK_STREAM,0);
if(sock<0){
perror("Opening stream socket");
exit(1);
} server.sin_family=PF_INET;
server.sin_port = htons(7016);
server.sin_addr.s_addr=inet_addr("10.105.200.45");
msgsock=connect(sock,(struct sockaddr*)&server,sizeof(server)); length=sizeof(buf);
//调用send函数发送数据
int rval=send(sock,buf,length,MSG_OOB);
if(rval!=length){
perror("Sending stream error");
getchar();
exit(1);
} closesocket(msgsock);
WSACleanup();
return 0;
}///////////////////////////////请路过的人帮忙看看呀!
解决方案 »
- 请问大家这个题应该怎么做呢?
- 菜鸟提问:ide编译环境中怎样删除工具栏的图标?
- 请问高手,我现在知道MM_HIMETRIC表示的一个width和height,如何转换成MM_TEXT的width和height?
- 求源码
- 怎样只刷新一个窗口
- 在vc(sp5)中使用rational rose的PureConverage/Purify出现以下提示,怎么解决??
- 文档、框架、视图的生成顺序?
- How 调用DLL ?
- 请教:VC如何往ACCESS中写入一个Function
- 如何在客户端下载ACTIVEX时,同时进行数字签名?
- 很菜的问题:如何为wWinMainCRTStartup设定程序入口?
- 在vc中利用MYSQL的C API开发MYSQL数据库需要对做什么设置?
server.sin_addr.s_addr=inet_addr("10.105.200.45");//这个IP是否正确?改用
server.sin_addr.s_addr=inet_addr("127.0.0.1");//用本机IP测试
int nBytes = 1024,nLeft,index;
nLeft = nBytes;
index = 0;
while (nLeft > 0)
{
ret = send(sock, &sendbuff[index], nLeft, 0)
nLeft -= ret;
index += ret;
}同样,接收数据是也要用循环来保证数据已经全部接收。
是否因为客户端断开连接了?
==客户端强制断开连接。应该是客户端接收有问题。