socket 笔记(一)
#include "stdafx.h"
#include "WINSOCK2.H" #pragma comment(lib,"WS2_32.lib")
#define BUF_SIZE 64 //缓冲区大小
int _tmain(int argc, _TCHAR* argv[])
{
WSADATA wsd;//存储WSAStartup返回的数据windows socket数据。
SOCKET server; //服务器套接字
SOCKET client; //客户端套接字
int retVal;
char buf[BUF_SIZE]; //初始化动态库套接字
//WSAStartup Winsock初始化
ZeroMemory(buf, BUF_SIZE);
if (WSAStartup(MAKEWORD(, ), &wsd) != )
{
printf("WSAStartup failed 1/n");
return ;
} //创建套接字
//AF_INET IPV4套接字类型
//AF_INET6 IPV6套接字类型
//AF_UNIX Unix套接字类型
//SOCK_STREAM TCP协议
//SOCK_DGRAM UDP协议
//SOCK_RAW 特殊的IPV4,可以处理ICMP、IGMP等网络报文
//INVALID_SOCKET socket创建失败
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (INVALID_SOCKET == server)
{
printf("socket failed !/n");
WSACleanup();
return -;
} //服务器套接地址
//sin_family 协议簇
//sin_addr 地址
//htonl()--"Host to Network Long"
//ntohl()--"Network to Host Long"
//htons()--"Host to Network Short"
//ntohs()--"Network to Host Short"
//INADDR_ANY inet_addr("0.0.0.0")监听所有网络
//SOCKADDR_IN SOCKADDR 网络地址
SOCKADDR_IN addserver;
addserver.sin_family = AF_INET;
addserver.sin_port = htons();
addserver.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //绑定套接字
retVal = bind(server, (const struct sockaddr*)&addserver, sizeof(SOCKADDR_IN));
if (SOCKET_ERROR == retVal)
{
printf("bind failed !/n");
closesocket(server);
WSACleanup();
return false;
} //监听套接字
retVal = listen(server, );
if (SOCKET_ERROR == retVal)
{
printf("listen failed!/n");
closesocket(server);
WSACleanup();
return false;
} //接受客户端数据
//accept 建立链接 返回一个SOCKET类型的值,表示接收到的套接字的描述符,否则返回INVALID_SOCKET _In_ SOCKET s,
sockaddr_in addrClient;
int addrClintlen = sizeof(addrClient);
client = accept(server, (sockaddr FAR*)&addrClient, &addrClintlen);
{
printf("accept failed !/n");
closesocket(server);
WSACleanup();
return -;
} //接收客户端套接字
retVal = recv(client, buf, BUF_SIZE, );
if (SOCKET_ERROR == retVal)
{
printf("recv failed !/n");
closesocket(server);
closesocket(client);
WSACleanup();
return false;
} //退出程序
printf("Recv From Client:%s/n", buf);
retVal = send(client, "Hello Word!", strlen("Hello word!"), );
if (SOCKET_ERROR == retVal)
{
printf("send failed !/n");
closesocket(server);
closesocket(client);
WSACleanup();
return false;
}
closesocket(server);
closesocket(client);
WSACleanup();
return ;
}
socket 笔记(一)的更多相关文章
- iOS socket 笔记
ios 客服端: 下载 AsyncSocket 开发框架,拖到项目中 //建立 #import "ViewController.h" #import <sys/socket. ...
- socket笔记
参考: http://www.cnblogs.com/dolphinX/p/3460545.html http://www.cnblogs.com/wei2yi/archive/2011/03/23/ ...
- linux c socket笔记 -服务端
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...
- C# Socket笔记
看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字句.(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是 ...
- 操作socket笔记
网络编程 1.tcp协议 #tcpserver #单纯一对一发 tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建tcp套接字 参 ...
- TCP IP SOCKET 笔记
网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可 ...
- tcp/ip http socket笔记
1.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输 HTTP是应用层协议,主要解决如何包装数据 2.TCP连接的三次握手 第一次握手:客户端发送syn包到服务器,并进入SYN_SEND状态 ...
- C# Socket编程笔记(转)
C# Socket编程笔记 http://www.cnblogs.com/stg609/archive/2008/11/15/1333889.html TCP Socket:Server 端连接步骤: ...
- Android Socket编程学习笔记
http://blog.csdn.net/eyu8874521/article/details/8847173 度娘给出的描述:通常也称作"套接字",用于描述IP地址和端口,是一个 ...
随机推荐
- JsonRequestBehavior.AllowGet 方便浏览器调试
[HttpGet] public ActionResult getCoversationList(int CustomerId) { // 获取用户相关的聊天数据,包括个人,群,系统(可以单独获取) ...
- 暑假集训-WHUST 2015 Summer Contest #0.2
ID Origin Title 10 / 55 Problem A Gym 100625A Administrative Difficulties 4 / 6 Problem B Gym 1006 ...
- MessageFormat
MessageFormat mf = new MessageFormat("{0,number,#.##}, {0,number,#.#}"); Object[] objs = { ...
- UVA Watering Grass
贪心算法. #include <iostream> #include <cstdio> #include <cstring> #include <queue& ...
- 关于vs2012/2013的C编译器生成的exe的向后兼容xp的问题
问题一:编译出来的exe在xp上面运行提示"不是有效的win32应用程序" 在vs2012/2013版本里面,其自带的c编译器cl.exe,若直接使用cl a.c编译,那么生成出来 ...
- which---查找并显示给定命令的绝对路径
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录.which指令会在环境变量$PATH设置的目录里查找符合条件的文件.也就是说,使用which命令,就可 ...
- 【APP测试】APP弱网环境测试
方法一:利用抓包工具 1.利用fiddler通过代理连接上手机之后,进入Fiddler->Rules->Customize Rules,点击弹出的CustomRules.js文件,找到m_ ...
- spring在web.xml中的配置
在实际项目中spring的配置文件applicationcontext.xml是通过spring提供的加载机制,自动加载的容器中去,在web项目中,配置文件加载到web容器中进行解析,目前,sprin ...
- C++中的指针、数组指针与指针数组、函数指针与指针函数
C++中的指针.数组指针与指针数组.函数指针与指针函数 本文从刚開始学习的人的角度,深入浅出地具体解释什么是指针.怎样使用指针.怎样定义指针.怎样定义数组指针和函数指针.并给出相应的实例演示.接着,差 ...
- Python!Are you kidding me?
前几天由于python给我带来了兴奋写了一篇文章叫做<The beauty of python 1>,今天则是由于一个小错误而写下此文. 也是缘因为我的工作,问题是这种: 我有一个文档.里 ...