服务端源程序:
#include <stdio.h>
#include <Winsock2.h>
#include <windows.h>
#define ERR -1 //error
#define INFOLEN 100 //接收的字符数
unsigned long threadId;
SOCKET socketsrv;
SOCKADDR_IN srvadd;
SOCKADDR_IN clientadd;
unsigned long _stdcall RecvInfoThread( void *pv );
unsigned long _stdcall RecvInfoThread( void *pv )
{
int ret=1;
char recive[INFOLEN];
int len =sizeof(SOCKADDR);
while(ret!=ERR)
{
ret=recvfrom(socketsrv,recive,INFOLEN,0,(SOCKADDR*)&clientadd,&len);
if(ret!=ERR)
{
printf("%s\n",recive);
}
}
return 0;
}
void main(){
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
// int iMode=1;
socketsrv=socket(AF_INET,SOCK_DGRAM,0);
// ioctlsocket(socketsrv,FIONBIO, (u_long FAR*) &iMode);
//设置
srvadd.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
srvadd.sin_family=AF_INET;
srvadd.sin_port=htons(6000);
// 绑定
bind(socketsrv,(SOCKADDR*)&srvadd,sizeof(SOCKADDR));
int len=sizeof(SOCKADDR);
CreateThread( NULL,0,&RecvInfoThread,NULL,0,&threadId );
char send[100];
while(1){
gets(send);
if( sendto(socketsrv,send,strlen(send)+1,0,(SOCKADDR*)&clientadd,len)!=ERR)
{
printf("%s\n",send);
printf("%s\n",inet_ntoa(clientadd.sin_addr));
}
}
}
客户端源程序:
#include <stdio.h>
#include <Winsock2.h>
#include <windows.h>
#define ERR -1 //error
#define INFOLEN 100 //接收的字符数
unsigned long threadId;
SOCKET socketclient;
SOCKADDR_IN srvadd;unsigned long _stdcall RecvInfoThread( void *pv );
unsigned long _stdcall RecvInfoThread( void *pv )
{
int ret=1;
char recive[INFOLEN];
int len =sizeof(SOCKADDR);
while(1)
{
ret=recvfrom(socketclient,recive,INFOLEN,0,(SOCKADDR*)&srvadd,&len);
if(ret!=ERR)
{
printf("%s\n",recive);
}
}
return 0;
}
void main(){
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
//int iMode=1;
socketclient=socket(AF_INET,SOCK_DGRAM,0);
// ioctlsocket(socketclient,FIONBIO, (u_long FAR*) &iMode);
srvadd.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
srvadd.sin_family=AF_INET;
srvadd.sin_port=htons(6000);
CreateThread( NULL,0,&RecvInfoThread,NULL,0,&threadId);
char send[100];
int i=1; int len =sizeof(SOCKADDR);
while(1)
{
gets(send);
sendto(socketclient,send,strlen(send)+1,0,(SOCKADDR*)&srvadd,len);
}
}
#include <stdio.h>
#include <Winsock2.h>
#include <windows.h>
#define ERR -1 //error
#define INFOLEN 100 //接收的字符数
unsigned long threadId;
SOCKET socketsrv;
SOCKADDR_IN srvadd;
SOCKADDR_IN clientadd;
unsigned long _stdcall RecvInfoThread( void *pv );
unsigned long _stdcall RecvInfoThread( void *pv )
{
int ret=1;
char recive[INFOLEN];
int len =sizeof(SOCKADDR);
while(ret!=ERR)
{
ret=recvfrom(socketsrv,recive,INFOLEN,0,(SOCKADDR*)&clientadd,&len);
if(ret!=ERR)
{
printf("%s\n",recive);
}
}
return 0;
}
void main(){
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
// int iMode=1;
socketsrv=socket(AF_INET,SOCK_DGRAM,0);
// ioctlsocket(socketsrv,FIONBIO, (u_long FAR*) &iMode);
//设置
srvadd.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
srvadd.sin_family=AF_INET;
srvadd.sin_port=htons(6000);
// 绑定
bind(socketsrv,(SOCKADDR*)&srvadd,sizeof(SOCKADDR));
int len=sizeof(SOCKADDR);
CreateThread( NULL,0,&RecvInfoThread,NULL,0,&threadId );
char send[100];
while(1){
gets(send);
if( sendto(socketsrv,send,strlen(send)+1,0,(SOCKADDR*)&clientadd,len)!=ERR)
{
printf("%s\n",send);
printf("%s\n",inet_ntoa(clientadd.sin_addr));
}
}
}
客户端源程序:
#include <stdio.h>
#include <Winsock2.h>
#include <windows.h>
#define ERR -1 //error
#define INFOLEN 100 //接收的字符数
unsigned long threadId;
SOCKET socketclient;
SOCKADDR_IN srvadd;unsigned long _stdcall RecvInfoThread( void *pv );
unsigned long _stdcall RecvInfoThread( void *pv )
{
int ret=1;
char recive[INFOLEN];
int len =sizeof(SOCKADDR);
while(1)
{
ret=recvfrom(socketclient,recive,INFOLEN,0,(SOCKADDR*)&srvadd,&len);
if(ret!=ERR)
{
printf("%s\n",recive);
}
}
return 0;
}
void main(){
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
//int iMode=1;
socketclient=socket(AF_INET,SOCK_DGRAM,0);
// ioctlsocket(socketclient,FIONBIO, (u_long FAR*) &iMode);
srvadd.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
srvadd.sin_family=AF_INET;
srvadd.sin_port=htons(6000);
CreateThread( NULL,0,&RecvInfoThread,NULL,0,&threadId);
char send[100];
int i=1; int len =sizeof(SOCKADDR);
while(1)
{
gets(send);
sendto(socketclient,send,strlen(send)+1,0,(SOCKADDR*)&srvadd,len);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货