请问如何写一个能在局域网里发送消息的程序? 我刚刚接触这一方面的内容。新手来的,希望可以给一个例子,或思路,谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用SOCKET写的话很简单的,不知道你懂不懂SOCKET编程的基础内容,这里给出一个小例子。/*Server.cpp*/#include <winsock2.h>#include <stdio.h>int main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 1; } if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return 2; } //设置SOCKET为TCP模式 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(8000); bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); listen(sockSrv,5); SOCKADDR_IN addrConn; int len=sizeof(SOCKADDR); char recvBuf[100]; SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrConn,&len); send(sockConn,"This is Server send!",strlen("This is Server send!")+1,0); recv(sockConn,recvBuf,100,0); printf(recvBuf); printf("\n"); closesocket(sockConn); closesocket(sockSrv); WSACleanup(); return 0;} /*Client.cpp*/#include <winsock2.h>#include <stdio.h>int main(){ WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return 1; } if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return 2; } SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; //这里是要设置要发送的主机地址 addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.18.3"); //设置地址族,只能是AF_INET addrSrv.sin_family=AF_INET; //设置通讯端口 addrSrv.sin_port=htons(8000); char recvBuf[100]; connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); recv(sockClient,recvBuf,100,0); send(sockClient,"This is Client send!",strlen("This is Client send!")+1,0); printf(recvBuf); printf("\n"); closesocket(sockClient); WSACleanup(); return 0;}这只是个简单应用,先运行Server再运行Client就能看到通讯的效果,这里是基于TCP的编译时在addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.18.3");这里改一下,IP要改为Server的IP 还有,不知道你是不是知道,编译的时候记得在工程的settings->Link里的Object/Library modules里加上WS2_32.LIB vckbase.com上面有,去找找看。 买本书 《 windows 网络编程 》 不用ctime coledatetime怎么处理时间? 关于定时器!在线等!急!! 一个socket的入门问题~~~ 关于滚动条 怎么将csdn问题网页保存在自己的硬盘上? 如何改变非MFC的程序(SDK)的EXE文件的图标? 急!高分请教一个简单的问题 有没有基于双目视觉的三维重构程序 基于VC++的 ?谢了 如何为static 控件增加右键点击事件? 默认只有BN_CLICKED 怎样访问远程的数据库? 毕业设计求救,关于网络流量计费的 CEditView中GetEditCtrl获得到CEdit如何自动换行?
/*Server.cpp*/
#include <winsock2.h>
#include <stdio.h>int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return 1;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return 2;
}
//设置SOCKET为TCP模式
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(8000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5); SOCKADDR_IN addrConn;
int len=sizeof(SOCKADDR); char recvBuf[100];
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrConn,&len); send(sockConn,"This is Server send!",strlen("This is Server send!")+1,0);
recv(sockConn,recvBuf,100,0); printf(recvBuf);
printf("\n");
closesocket(sockConn);
closesocket(sockSrv);
WSACleanup(); return 0;
}
#include <winsock2.h>
#include <stdio.h>int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return 1;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return 2;
} SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; //这里是要设置要发送的主机地址
addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.18.3");
//设置地址族,只能是AF_INET
addrSrv.sin_family=AF_INET;
//设置通讯端口
addrSrv.sin_port=htons(8000); char recvBuf[100];
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
recv(sockClient,recvBuf,100,0);
send(sockClient,"This is Client send!",strlen("This is Client send!")+1,0); printf(recvBuf);
printf("\n");
closesocket(sockClient);
WSACleanup(); return 0;
}
这只是个简单应用,先运行Server再运行Client就能看到通讯的效果,这里是基于TCP的编译时在addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.18.3");这里改一下,IP要改为Server的IP