请教怎么写一个能在局域网里发送消息的程序
请问如何写一个能在局域网里发送消息的程序?
我刚刚接触这一方面的内容。新手来的,希望可以给一个例子,或思路,谢了
------解决方案--------------------
用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
我刚刚接触这一方面的内容。新手来的,希望可以给一个例子,或思路,谢了
------解决方案--------------------
用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