求一个VC++上socket编程的helloworld程序?? 求一个VC++上socket编程的helloworld程序不用MFC类 有注释有client.cppand server.cpp那位好心人有这样的程序学习下,谢谢你的回复,节日快乐!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 孙鑫老师书中的代码//Server.cpp#include <Winsock2.h>#include <stdio.h>void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) {return;}if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) {WSACleanup( );return; }SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));listen(sockSrv,5);SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);while(1){SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);char sendBuf[100];sprintf(sendBuf, "Welcome %s to http://www.sunxin.org ",inet_ntoa(addrClient.sin_addr));send(sockConn,sendBuf,strlen(sendBuf)+1,0);char recvBuf[100];recv(sockConn,recvBuf,100,0);printf( "%s\n ",recvBuf);closesocket(sockConn);}}//Client.cpp#include <Winsock2.h>#include <stdio.h>void main(){WORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );if ( err != 0 ) {return;}if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) {WSACleanup( );return; }SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr( "127.0.0.1 ");addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));char recvBuf[100];recv(sockClient,recvBuf,100,0);printf( "%s\n ",recvBuf);send(sockClient, "This is lisi ",strlen( "This is lisi ")+1,0);closesocket(sockClient);WSACleanup();} 我现给你写了一个,并且注释写得已经十分详细了,编译的时候不要忘了加入ws2_32.lib首先是服务器端:#include "Winsock2.h"#include <stdio.h>void main(){ WORD wVersonRequested; WSADATA wsaData; int err; //创建套接字版本 wVersonRequested=MAKEWORD(1,1); err=WSAStartup(wVersonRequested,&wsaData); if (err!=0) { return; } //验证套接字版本 if ((LOBYTE(wVersonRequested)!=1)|| (HIBYTE(wVersonRequested)!=1)) { WSACleanup(); return; } /* TCP协议编程,服务器端主要分为以下几个步骤: 1、创建套接子 2、绑定套接字(bind) 3、将套接字设置为监听模式(listen) 4、接受连接请求,并返回一个新的用于此次连接的套接字(accept) 5、send/recv 6、返回,并等待下次连接请求 7、关闭套接字 */ //1、创建套接子 SOCKET m_socket=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(29000); //2、绑定套接字(bind) bind(m_socket,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //3、将套接字设置为监听模式(listen) listen(m_socket,5); SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR); while (true) { //4、接受连接请求,并返回一个新的用于此次连接的套接字(accept) SOCKET m_sockClient=accept(m_socket,(SOCKADDR*)&addrClient,&len); //5、send/recv send(m_sockClient,"Hello World!This is Server",strlen("Hello World!This is Server")+1,0); char recvBuf[100]; recv(m_sockClient,recvBuf,100,0); printf("The Client said: %s",recvBuf); //6、关闭创建的新套接字并返回 closesocket(m_sockClient); } //7、关闭套接字 closesocket(m_socket); WSACleanup();}然后是客户端:#include "Winsock2.h"#include <stdio.h>void main(){ WORD wVersonRequested; WSADATA wsaData; int err; //创建套接字版本 wVersonRequested=MAKEWORD(1,1); err=WSAStartup(wVersonRequested,&wsaData); if (err!=0) { return; } //验证套接字版本 if ((LOBYTE(wVersonRequested)!=1)|| (HIBYTE(wVersonRequested)!=1)) { WSACleanup(); return; } /* TCP连接方式客户端主要分为以下几个步骤 1、创建套接字 2、连接服务器(connect) 3、send/receive 4、关闭套接字 */ //1、创建套接字 SOCKET m_socket=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(29000); //2、连接服务器(connect) connect(m_socket,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); char recvBuf[100]; //3、send/receive recv(m_socket,recvBuf,100,0); printf("The server said:%s\n",recvBuf); send(m_socket,"Hello World!This is Client.",strlen("Hello World!This is Client.")+1,0); //4、关闭套接字 closesocket(m_socket); WSACleanup(); getchar(); getchar();} VC中CreateProcess()的问题,求帮助啊,速度来人,在线等 设置外部程序跟随对话框移动 new的用法~~~ 谁能告诉我PhotoShop6.0 “裁切”工具生成的那个窗口,边框效果是怎么实现的呀;有种动感,很稀罕 GetThisMoudlePath()这个函数是做什么的? 路过的各位大哥大姐们,有力地出力,没力地捧个场吧 (50分)求学生管理信息系统源代码 请问如何在组件服务中注册*.tbl内的COM组件 怎么使treectrl的某一项不能选择? 怎么在控件中实现光标by code移动 【求助】:如何清空 VC output 中的内容? 向进程注入DLL的问题,可否永久注入
//Server.cpp
#include <Winsock2.h>
#include <stdio.h>void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));listen(sockSrv,5);SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf, "Welcome %s to http://www.sunxin.org ",
inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
recv(sockConn,recvBuf,100,0);
printf( "%s\n ",recvBuf);
closesocket(sockConn);
}
}
//Client.cpp
#include <Winsock2.h>
#include <stdio.h>void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr( "127.0.0.1 ");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));char recvBuf[100];
recv(sockClient,recvBuf,100,0);
printf( "%s\n ",recvBuf);
send(sockClient, "This is lisi ",strlen( "This is lisi ")+1,0);closesocket(sockClient);
WSACleanup();
}
#include "Winsock2.h"
#include <stdio.h>void main()
{
WORD wVersonRequested;
WSADATA wsaData;
int err; //创建套接字版本
wVersonRequested=MAKEWORD(1,1);
err=WSAStartup(wVersonRequested,&wsaData); if (err!=0)
{
return;
} //验证套接字版本
if ((LOBYTE(wVersonRequested)!=1)||
(HIBYTE(wVersonRequested)!=1))
{
WSACleanup();
return;
} /*
TCP协议编程,服务器端主要分为以下几个步骤:
1、创建套接子
2、绑定套接字(bind)
3、将套接字设置为监听模式(listen)
4、接受连接请求,并返回一个新的用于此次连接的套接字(accept)
5、send/recv
6、返回,并等待下次连接请求
7、关闭套接字
*/ //1、创建套接子
SOCKET m_socket=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(29000);
//2、绑定套接字(bind)
bind(m_socket,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //3、将套接字设置为监听模式(listen)
listen(m_socket,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while (true)
{
//4、接受连接请求,并返回一个新的用于此次连接的套接字(accept)
SOCKET m_sockClient=accept(m_socket,(SOCKADDR*)&addrClient,&len);
//5、send/recv
send(m_sockClient,"Hello World!This is Server",strlen("Hello World!This is Server")+1,0);
char recvBuf[100];
recv(m_sockClient,recvBuf,100,0);
printf("The Client said: %s",recvBuf);
//6、关闭创建的新套接字并返回
closesocket(m_sockClient);
}
//7、关闭套接字
closesocket(m_socket);
WSACleanup();
}然后是客户端:
#include "Winsock2.h"
#include <stdio.h>void main()
{
WORD wVersonRequested;
WSADATA wsaData;
int err; //创建套接字版本
wVersonRequested=MAKEWORD(1,1);
err=WSAStartup(wVersonRequested,&wsaData);
if (err!=0)
{
return;
} //验证套接字版本
if ((LOBYTE(wVersonRequested)!=1)||
(HIBYTE(wVersonRequested)!=1))
{
WSACleanup();
return;
} /*
TCP连接方式客户端主要分为以下几个步骤
1、创建套接字
2、连接服务器(connect)
3、send/receive
4、关闭套接字
*/ //1、创建套接字
SOCKET m_socket=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(29000); //2、连接服务器(connect)
connect(m_socket,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); char recvBuf[100]; //3、send/receive
recv(m_socket,recvBuf,100,0);
printf("The server said:%s\n",recvBuf);
send(m_socket,"Hello World!This is Client.",strlen("Hello World!This is Client.")+1,0); //4、关闭套接字
closesocket(m_socket);
WSACleanup(); getchar();
getchar();
}