简单的UDP回射服务程序与客户程序(修改自Unix网络编程一书)

原创 2012年03月30日 01:18:08
#include<winsock2.h>
#include"InitSock.h"
#include<windows.h> 
#include<cstdio>
#include<cstdlib>
#include<cstring>



#pragma comment(lib,"ws2_32.lib")

CInitSock InitSock ;

#define SERVERPORT  5010


void dg_echo(SOCKET sSockfd , SOCKADDR * pcliaddr, size_t clilen) ;

int main(void)
{
	SOCKET sSockfd ;
	sockaddr_in  Servaddr , Cliaddr ;

	sSockfd = socket(AF_INET,SOCK_DGRAM,0) ;

	memset(&Servaddr,0,sizeof(Servaddr)) ;
	memset(&Cliaddr,0,sizeof(Cliaddr)) ;

	Servaddr.sin_family = AF_INET ;
	Servaddr.sin_port = htons(SERVERPORT) ;
	Servaddr.sin_addr.s_addr = htonl(INADDR_ANY) ;

	bind(sSockfd,(SOCKADDR *)&Servaddr, sizeof(Servaddr)) ;

	dg_echo(sSockfd,(SOCKADDR*) &Cliaddr ,sizeof(Cliaddr)) ;


	return  0 ;
}

void dg_echo(SOCKET sSockfd , SOCKADDR * pcliaddr, size_t clilen)
{
	int n = 0 ;
	int iSend = 0 ;

	int len = 0 ;

	TCHAR szRecvMsg[1024] ;
	TCHAR szSendMsg[1024]  ;
	
	for(; ; )
	{
		len = clilen ;
		n = recvfrom(sSockfd,szRecvMsg,1024,0,pcliaddr,&len) ;
		szRecvMsg[n] = '\0' ;

		printf("接收到 %d 字节数据,内容为 %s\n",n , szRecvMsg) ;

		strcpy(szSendMsg,szRecvMsg) ;
		iSend = sendto(sSockfd,szSendMsg,strlen(szSendMsg),0,pcliaddr,len) ;

		printf("发送到 %d 字节数据,内容为 %s\n",iSend,szSendMsg) ;

	}
}


 

 

#include<winsock2.h>
#include"InitSock.h"
#include<windows.h>
#include<cstdio>
#include<cstdlib>
#include<cstring>


#pragma comment(lib,"ws2_32.lib") 

CInitSock InitSock ;

#define SERVERPORT  5010


void dg_cli(FILE *fp,SOCKET sockfd, const SOCKADDR * pservaddr, int servlen)  ; 

int main(void)
{
	SOCKET  sSockClient ;
	sockaddr_in  Servaddr ;

	memset(&Servaddr,0,sizeof(Servaddr)) ;

	Servaddr.sin_family = AF_INET ;
	Servaddr.sin_port = htons(SERVERPORT) ;
	Servaddr.sin_addr.s_addr = inet_addr("127.0.0.1") ;

	sSockClient = socket(AF_INET,SOCK_DGRAM,0) ;

	dg_cli(stdin,sSockClient,(SOCKADDR*) &Servaddr,sizeof(Servaddr)) ;

	return  0 ;
}

void dg_cli(FILE *fp,SOCKET sockfd, const SOCKADDR * pservaddr, int servlen)
{
	int iRecv = 0 ;
	int iSend = 0 ;
	TCHAR  szSendMsg[1024]  ;
	TCHAR szRecvMsg[1024]  ;

	while(fgets(szSendMsg,1024,fp) != NULL)
	{
		iSend = sendto(sockfd,szSendMsg,strlen(szSendMsg),0,pservaddr,servlen) ;

		iRecv = recvfrom(sockfd,szRecvMsg,1024,0,NULL,NULL) ;

		szRecvMsg[iRecv] = '\0' ;

		printf("回显数据: \n") ;
		fputs(szRecvMsg,stdout) ;
	}
	
}


 

 

简单的TCP回射服务程序与客户程序(修改自UNP一书)

#ifndef INITSOCK_H_ /* --------------------------------------------------- 文件:InitSock.h 功能简述:载...
  • gzzheyi
  • gzzheyi
  • 2012年03月30日 01:16
  • 1209

UNIX网络编程卷1 回射客户程序 UDP 超时设置

最初代码: #include "unp.h" int main(int argc, char **argv) { int sockfd; struct sockaddr_in serv...
  • zhsenl
  • zhsenl
  • 2014年08月25日 21:50
  • 846

UNIX网络编程学习(11)--分析TCP回射服务+客户程序:正常启动与正常终止

分析TCP回射服务+客户程序: 启动服务器程序后,netstat -a,后终端出现: Active Internet connections (servers and established) ...

UNIX网络编程(10)--TCP 回射服务器程序和客户程序

一个简单的回射服务器的步骤: 1.客户端从标准输入读入一行文本,并写给服务器。 2.服务器端从网络输入读入这行文本,并返回给客户 3.客户端从网络输入读入这行反射文本,并显示在标准输出上。 如...

《unix网络编程》(18)基本UDP套接字 简单客户服务器回射程序及改进

基本TCP套接字参考《unix网络编程》(8)基本TCP套接字 套接字函数 #include #include ssize_t recvfrom(int sockfd, void *buf...

Linux网络编程(2):UDP客户服务程序设计

UDP,即用户数据包协议,是一种无连接的传输层协议。euh

UNIX网络编程——非阻塞connect:时间获取客户程序

#include "unp.h" int connect_nonb(int sockfd, const SA *saptr, socklen_t salen, int nsec) { int ...

《UNIX网络编程 卷1》 笔记: 多线程—web客户程序

在非阻塞式connect—web客户程序一节中,我们使用非阻塞式connect(对于每个待读取的文件,向服务器发起非阻塞连接)和select(监听所有的套接字描述符)实现了一个web客户程序,本节我们...

UNIX网络编程学习(18)--UDP回射(服务器+客户端)程序

服务器端:   #include "unp.h" int main(int argc, char **argv) { int sockfd; struct socka...

【Unix 网络编程】UDP 客户/服务器简单 Socket 程序

UDP 是无连接不可靠的数据包协议,不同于 TCP 提供的面向连接的可靠字节流。在介绍UDP编程模型前,先介绍UDP协议中两个重要的函数:sendto 和 recvfrom。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单的UDP回射服务程序与客户程序(修改自Unix网络编程一书)
举报原因:
原因补充:

(最多只允许输入30个字)