测试demo

 #include <winsock2.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#if 0
#define TCP
#else
#define UDP
#endif #pragma comment(lib, "ws2_32.lib")
char *ip = "10.8.2.60";
#ifdef UDP
short port = ;
#endif
#ifdef TCP
short port = ;
#endif
SOCKET fd; int init(void) {
WSADATA wsaData;
int nRet;
if((nRet = WSAStartup(MAKEWORD(,),&wsaData)) != ){
printf("WSAStartup failed!\n");
exit();
}
} int init_socket(void){
SOCKADDR_IN local;
#ifdef UDP
if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -){
#endif
#ifdef TCP
if ((fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -){
#endif
printf("%d\n", WSAGetLastError());
perror("socket");
//getchar();
return -;
} printf("fd:%d start......\n", fd); local.sin_family = AF_INET;
local.sin_port = htons((short)port);
local.sin_addr.s_addr = inet_addr(ip);
//local.sin_addr.S_un.S_addr = inet_addr(ip); if (bind(fd, (SOCKADDR *)&local, sizeof(local)) == SOCKET_ERROR) {
printf("reason %d ", WSAGetLastError());
printf("bind failed!\n");
getchar();
return -;
} #ifdef TCP
if (listen(fd, ) == -){
perror("listen");
return -;
}
#endif
return ;
} int main(int argc, char *argv[]) {
char buffer[];
int size;
SOCKADDR_IN from;
int addrlen = sizeof(from);
SOCKET client;
unsigned int index = ; init();
if (init_socket()) {
//printf("init socket error!\n");
return -;
} while (){
index++;
#ifdef UDP
size = recvfrom(fd, buffer, sizeof(buffer), , NULL, NULL);
printf("recvfrom:%d index:%u\n", size, index);
#endif
#ifdef TCP
if ((client = accept(fd, (SOCKADDR *)&from, &addrlen)) == -){
perror("accept");
return -;
}
size = recv(client, buffer, sizeof(buffer), );
printf("recv:%d\n", size);
#endif
} getchar();
return ;
}

以上是 server 端,一下是 client 端:

 #include <winsock2.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h> #if 0
#define UDP
#else
#define TCP
#endif #pragma comment(lib, "ws2_32.lib")
char *ip = "10.8.2.56"; #ifdef UDP
short port = ;
#else
short port = ;
#endif SOCKET fd; int init(void) {
WSADATA wsaData;
int nRet;
if((nRet = WSAStartup(MAKEWORD(,),&wsaData)) != ){
printf("WSAStartup failed!\n");
exit();
}
} int init_socket(void){ #ifdef UDP
if ((fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -){
#else
SOCKADDR_IN local;
if ((fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -){
#endif
printf("%d\n", WSAGetLastError());
perror("socket");
//getchar();
return -;
} #ifdef TCP local.sin_family = AF_INET;
local.sin_port = htons(port);
local.sin_addr.S_un.S_addr = inet_addr(ip); if (connect(fd, (SOCKADDR *)&local, sizeof(local)) == SOCKET_ERROR) {
printf("connect error!\n");
perror("connect");
return -;
}
#endif
printf("fd:%d start......\n", fd); return ;
} int main(int argc, char *argv[]) {
char buffer[];
int size;
int result = ;
unsigned int index = ; init(); if (init_socket()){
return -;
} #ifdef UDP
SOCKADDR_IN sin;
int addrlen = sizeof(sin);
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
sin.sin_addr.s_addr = inet_addr(ip);
#endif memset(buffer, , sizeof(buffer));
while () {
#ifdef UDP
result = sendto(fd, buffer, sizeof(buffer), , (SOCKADDR *)&sin, addrlen);
#else
result = send(fd, buffer, sizeof(buffer), );
#endif
printf("result:%d, index:%d\n", result, index);
getchar();
index++;
} return ;
}

【网络编程】——windows socket 编程的更多相关文章

  1. linux tcp/ip编程和windows tcp/ip编程差别以及windows socket编程详解

    最近要涉及对接现有应用visual c++开发的tcp客户端,花时间了解了下windows下tcp开发和linux的差别,从开发的角度而言,最大的差别是头文件(早期为了推广尽可能兼容,后面越来越扩展, ...

  2. Windows Socket 编程_单个服务器对多个客户端简单通讯

    单个服务器对多个客户端程序: 一.简要说明 二.查看效果 三.编写思路 四.程序源代码 五.存在问题 一.简要说明: 程序名为:TcpSocketOneServerToMulClient 程序功能:实 ...

  3. 网络协议 11 - Socket 编程(下):眼见为实耳听为虚

    系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - 从物理层到 MAC 层 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校 网 ...

  4. 多线程编程以及socket编程_Linux程序设计4chapter15

    看了Linux程序设计4中文版,学习了多线程编程和socket编程.本文的程序参考自Linux程序设计4的第15章. 设计了一个客户端程序,一个服务端程序.使用TCP协议进行数据传输. 客户端进程创建 ...

  5. 第九章:Python高级编程-Python socket编程

    第九章:Python高级编程-Python socket编程 Python3高级核心技术97讲 笔记 9.1 弄懂HTTP.Socket.TCP这几个概念 Socket为我们封装好了协议 9.2 cl ...

  6. 关于网络协议和socket编程基本概念

    TCP协议可以说已经是IT人耳熟能详的协议,最近在学习socket网络编程时后重新温习一下这个协议,针对一些问题做了一些总结,很多理解可能还不是很准确. 1. 协议是什么?所谓的各种网络协议无非是一种 ...

  7. iOS网络编程笔记——Socket编程

    一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是T ...

  8. 网络协议 10 - Socket 编程(上):实践是检验真理的唯一标准

    系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - 从物理层到 MAC 层 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校 网 ...

  9. java网络编程之Socket编程

    概念 网络编程分为BIO(传统IO).NIO.AIO.Socket编程属于BIO这种传统IO. InetAddress java.net.InetAddress是JAVA中管理IP地址的类,常用 pu ...

  10. C#网络编程:Socket编程

    套接字简介:套接字最早是Unix的,window是借鉴过来的.TCP/IP协议族提供三种套接字:流式.数据报式.原始套接字.其中原始套接字允许对底层协议直接访问,一般用于检验新协议或者新设备问题,很少 ...

随机推荐

  1. SQL Server 利用游标解决Tempdb究极竞争-DBA-程序员需知

    SQL Server tempdb分配竞争算是DBA老生常谈的问题了,几乎现在所有的DBA都知道多建几个文件来解决/缓解问题.但是深层次的的竞争依旧不可避免.这里给大家剖析下游标在tempdb中的特点 ...

  2. Orchard Compact v1.7.2

    1. 仅包留了Core中的Settings和Shapes, 及Modules, Themes和jQuery模块. 2. 添加了对Oracle的支持. 下载地址: 二进制: Orchard.Compac ...

  3. 随机数是骗人的,.Net、Java、C为我作证

    几乎所有编程语言中都提供了"生成一个随机数"的方法,也就是调用这个方法会生成一个数,我们事先也不知道它生成什么数.比如在.Net中编写下面的代码: Random rand = ne ...

  4. Asp.Net Web API 2第六课——Web API路由和动作选择

    Asp.Net Web API 导航 Asp.Net Web API第一课——入门http://www.cnblogs.com/aehyok/p/3432158.html Asp.Net Web AP ...

  5. nginx做反向代理并防盗链

    nginx做反向代理真的非常简单,只需设置location+proxy_pass即可. 防盗链配置有些复杂,需要注意的地方: 在防盗链的location中需要再设置一下proxy_pass(在这里走了 ...

  6. 消灭ASP.NET CachedPathData.ValidatePath引起的HttpException异常

    在博客程序的日志中经常会出现这样的错误日志: Url: http://www.cnblogs.com/cmt/p/sokcet_memory_leak.html (这个URL仅是示例)UserAgen ...

  7. KALI LINUX WEB 渗透测试视频教程—第16课 BEEF基本使用

    Kali Linux Web 渗透测试视频教程—第16课  BeEF基本使用 文/玄魂 目录 Kali Linux Web 渗透测试视频教程—第16课  BeEF基本使用............... ...

  8. 64-bit Tips

    终究还是来了.Apple下发了支持64位的最后通牒: As we announced in October, beginning February 1, 2015 new iOS apps submi ...

  9. tab切换的两种方法

    方法一.主要使用了传递参数的思想,把循环变量不能使用转换了一下<!DOCTYPE html><html lang="en"><head> < ...

  10. 详解Bootstrap表单组件

    表单常见的元素主要包括:文本输入框.下拉选择框.单选框.复选框.文本域.按钮等.下面是不同的bootstrap版本: LESS:  forms.less SASS:  _forms.scss boot ...