winsocket(1)
/*************************************************************************
*
* Copyright (c) 2002-2005 by Zhang Huiyong All Rights Reserved
*
* FILENAME: EchoSrv.c
*
* PURPOSE : ECHO 协议服务器程序.
*
* AUTHOR : 张会勇
*
* BOOK : <<WinSock网络编程经络>>
*
* 注: 此代码乃基本代码:
* 注: 作者CH
*
**************************************************************************/
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32") /* WinSock 使用的库函数 */
#define ECHO_DEF_PORT 7 /* 侦听的缺省端口 */
#define ECHO_BUF_SIZE 256 /* 缓冲区的大小 */
int main(int argc, char **argv)
{
WSADATA wsa_data;
SOCKET echo_soc = 0, /* 侦听 socket 句柄 */
acpt_soc = 0;
struct sockaddr_in serv_addr, /* socket的本地地址 */
clnt_addr; /* socket的远端地址 */
unsigned short port = ECHO_DEF_PORT;
int result = 0;
int addr_len = sizeof(struct sockaddr_in);
char recv_buf[ECHO_BUF_SIZE];
if (argc == 2)
port = atoi(argv[1]);
WSAStartup(MAKEWORD(2,0), &wsa_data);/* 初始化 WinSock资源 */
echo_soc = socket(AF_INET, SOCK_STREAM, 0); /* 创建 socket */
/* socket 的本地地址 */
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(port);
serv_addr.sin_addr.s_addr = INADDR_ANY;
result = bind(echo_soc, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
if (result == SOCKET_ERROR)
{
printf("[Echo Server] bind error: %d\n", WSAGetLastError());
closesocket(echo_soc);
return -1;
}
listen(echo_soc, SOMAXCONN);
printf("[Echo Server] is running ... ...\n");
while (1)
{
acpt_soc = accept(echo_soc, (struct sockaddr *)&clnt_addr, &addr_len);
if (acpt_soc == INVALID_SOCKET)
{
printf("[Echo Server] accept error: %d\n", WSAGetLastError());
break;
}
result = recv(acpt_soc, recv_buf, ECHO_BUF_SIZE, 0);
if (result > 0)
{
recv_buf[result] = 0;
printf("[Echo Server] receives: \"%s\", from %s\r\n",
recv_buf, inet_ntoa(clnt_addr.sin_addr));
result = send(acpt_soc, recv_buf, result, 0);
}
closesocket(acpt_soc);
}
closesocket(echo_soc);
WSACleanup(); //释放windows资源代码
return 0;
}
winsocket(1)相关推荐
- 使用C++实现Socket编程图片打包传输(修改)
使用: (1)首先运行服务端,待服务端运行起来: (2)最后运行客户端,输入要传输文件到哪个目标机器的IP地址: (3)输入传输文件的路径及文件(完成的路径),其中包含文件的类型,也就是后缀需要包含( ...
- qt socket 传递结构体 结构体中有list_计算机网络应用--Socket编程实验(二)
本节关于socket部分函数库列表,具体基于socket的实例实现代码见下节.给出基于winSocket的简单websever实例. 2.1 WSAStartup() [函数原型] int WSASt ...
- 华为C语言面试题(转!)
C语言面试题大汇总之华为面试题 Eddy整理 1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用 ...
- 游戏外挂制作指南 (一)
要想在修改游戏中做到百战百胜,是需要相当丰富的计算机知识的.有很多计算机高手就是从玩游戏,修改游戏中,逐步对计算机产生浓厚的兴趣,逐步成长起来的.不要在羡慕别人能够做到的,因为别人能够做的你也能够!我 ...
- 网络程序之TCP、UDP篇(其一)
我记得最开始接触网络程序是在我读大二的时候,当时我做的是一个聊天的程序,也不知道服务器和客户端的概念,在网上就是一顿找啊,才到自己能看懂的答案,但是只能两个程序能聊天.造成这样的原因是程序是阻塞的,然 ...
- vc 网络编程(socket)TCP/UDP 介绍
在网上找了很多的资料,现将这些资料整合起来,详细介绍一下VC下的socket编程,并提供一个服务器客户端具体的实例.希望对您有所帮助 一.原理部分 在网络编程中最常用的方案便是Client/Serve ...
- OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3
OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...
- 2022-2028年中国第五代移动通信技术(5G)市场研究及前瞻分析报告
[报告类型]产业研究 [报告价格]4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了中国第五代移动通信技术(5G)行业市场行业相 ...
- 2021-2027全球与中国经颅磁刺激仪(TMS)市场现状及未来发展趋势
[报告类型]产业研究 [报告价格]¥4500起 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了全球与中国经颅磁刺激仪(TMS)行业市场行 ...
最新文章
- python序列类型有_Python序列类型
- mstsc 加密oracle修正,mstsc远程报:这可能是由于CredSSP 加密Oracle修正的两种完美解决方法...
- .NET Core + Spring Cloud:服务注册与发现
- 利用FormData对象实现AJAX文件上传功能及后端实现
- 对ARP病毒攻击的防范和处理及相应工具方法
- 读书后对PMP的理解
- 使用本机IP调试web项目
- 数据结构1——堆栈和队列
- 18个国外优质图片素材
- 华为5G空口新技术(2015年)
- xp怎么查看计算机配置,怎么查看xp系统的配置信息
- 选购笔记本要看清液晶屏幕及主流技术
- 如何在手机上将图片转换为文字
- 如何启用计算机网络,启用网络发现,教您win10怎么启用网络发现
- MATLAB如何解决弹出路径不存在的问题
- 文献阅读 | Tracing the ancestry of modern bread wheats
- c语言outl函数,如何调用outlook
- 什么是RMI,什么是RPC,两者之间的区别是什么?
- Python入门--Pthon环境的安装
- 基于SphereFace深度学习的人脸考勤系统(Caffe+windows+OpenCV)
热门文章
- keil复制代码乱码_成都控制器开发:容易忽略!用KEIL编码汉字也会有BUG
- 学习笔记--asp.net母版页(转自msdn,仅为自己学习存储和有意读者使用)
- 双y轴设置 颜色_项目实战:Qt多段Y轴折线图框架(双Y轴段折线、支持拽拖、浮动游标显示X值各段Y值、实时下位机数据)...
- python计算众数
- storm如何集成kafka
- wps怎么投递简历发到boss直聘_BOSS直聘角逐招聘季:装机量、下载增量、增长率三料冠军...
- 计算机的指令合成为,第二章计算机操作基础知识doc
- C#查找指定窗口的子窗口的句柄
- UVA5876 Writings on the Wall 扩展KMP
- C++技术沙龙主要内容