#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 笔记(一)的更多相关文章

  1. iOS socket 笔记

    ios 客服端: 下载 AsyncSocket 开发框架,拖到项目中 //建立 #import "ViewController.h" #import <sys/socket. ...

  2. socket笔记

    参考: http://www.cnblogs.com/dolphinX/p/3460545.html http://www.cnblogs.com/wei2yi/archive/2011/03/23/ ...

  3. linux c socket笔记 -服务端

    #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types. ...

  4. C# Socket笔记

    看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字句.(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是 ...

  5. 操作socket笔记

    网络编程 1.tcp协议 #tcpserver #单纯一对一发 tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建tcp套接字 参 ...

  6. TCP IP SOCKET 笔记

    网络由下往上分为 物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层, 三者从本质上来说没有可 ...

  7. tcp/ip http socket笔记

    1.TCP/IP协议是传输层协议,主要解决数据如何在网络中传输 HTTP是应用层协议,主要解决如何包装数据 2.TCP连接的三次握手 第一次握手:客户端发送syn包到服务器,并进入SYN_SEND状态 ...

  8. C# Socket编程笔记(转)

    C# Socket编程笔记 http://www.cnblogs.com/stg609/archive/2008/11/15/1333889.html TCP Socket:Server 端连接步骤: ...

  9. Android Socket编程学习笔记

    http://blog.csdn.net/eyu8874521/article/details/8847173 度娘给出的描述:通常也称作"套接字",用于描述IP地址和端口,是一个 ...

随机推荐

  1. android-继承BaseAdapter--自己定义适配器,getView运行多次的解决方法

    定义的getView运行多次的ListView布局: <ListView android:id="@+id/lv_messages" android:layout_width ...

  2. 【POJ 2195】 Going Home(KM算法求最小权匹配)

    [POJ 2195] Going Home(KM算法求最小权匹配) Going Home Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  3. VGA接口时序约束

    SF-VGA模块板载VGA显示器DA转换驱动芯片AVD7123,FPGA通过OUPLLN连接器驱动ADV7123芯片产生供给VGA显示器的色彩以及同步信号.SF-CY3核心模块与SF-VGA子模块连接 ...

  4. 剑指offer—java版本实现

    终于完成了全部!所有的心累这时候都觉得很值得啊!爽! https://github.com/xurui1995/Sword-pointing-to-offer

  5. 清空/var/adm/wtmp 文件内容

    清/var/adm/wtmp 文件内容 用于显示登录系统和重启机器的情况 /var/adm/wtmp文件过大. 可用du -sm /var/adm/wtmp查看 cat /dev/null>/v ...

  6. MongoDB常用操作整理

    Mongodb:是一种NoSQL数据库,NoSQL:Not Only SQLSQL: 数据表->JDBC读取->POJO(VO.PO)->控制层转化为JSON数据->客户端 这 ...

  7. React-router 4 总结

    React-Router 4: BrowserRouter包裹整个应用 Router路由对应渲染的组件,可嵌套 Link跳转专用 首先 然后 其他组件: url参数 Route组建参数可用冒号标识参数 ...

  8. 51nod 子序列的个数 (动规分析方法)

    这道题的分析方法我很需要学习学习. 一开始我想的是f[i][j]表示前i个数子序列长度为j的个数 然后发现新加入一个数的时候会和前面的重复,这个时候不知道该怎么处理这种重复. 其实我再继续往下想就可以 ...

  9. android+myeclipse+mysql自定义控件下拉框的数据绑定

    原创作品,允许转载,转载时请务必声明作者信息和本声明.http://www.cnblogs.com/zhu520/p/8031936.html 本人小白,那个大神看到有问题可指出,谢谢.... 这个是 ...

  10. LRJ入门经典-0903切蛋糕305

    原题 LRJ入门经典-0903切蛋糕305 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 如图所示有一个矩形蛋糕,上面划分成 ...