测试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. (算是dp吧) 小茗的魔法阵 (fzu 2225)

    http://acm.fzu.edu.cn/problem.php?pid=2225   Problem Description 在打败了易基•普罗布朗.诺姆•普罗布朗之后,小茗同学开始挑战哈德•普罗 ...

  2. Dapper试用

    以下代码摘自imfunny的<给力分享新的ORM => Dapper> http://www.cnblogs.com/imfunny/archive/2011/09/16/21788 ...

  3. android firmware 利用UDP socket发送Magic Packet--c语言版本

    android firmware 利用UDP socket发送Magic Packet 1 Magic Packet格式: 6个0xFF + 16个Dst Mac Address 2 代码需要设置目的 ...

  4. opengl的mipmap

    压缩纹理是不能调用glGenerateMipmap生成mipmap的. DDS和PVR都不行. 强行调用会产生GL_INVALID_OPERATION的错误. PNG格式试验了glGenerateMi ...

  5. RaisingStudio.SessionFactory 发布 0.1版

    功能描述: 1. 支持Orchard中方便使用自定义数据库连接. 2. 连接信息可配置. 用法: 1. 构造函数中添加IRepositoryFactory引用 private readonly IRe ...

  6. java 初学者需注意问题

    1.Java为什么能跨平台运行? Java语言编写的程序既是编译型的,又是解释型的.程序代码经过编译之后转换为一种Java字节码的中间语言,Java虚拟机即JVM将对字节码进行解释和运行.编译只进行一 ...

  7. iOS-图片拉伸技巧

    iOS开发中我们会遇到渐变的背景,内容可变的流式标签,聊天气泡(QQ聊天气泡),由于内容是可变的,宽度和高度同样可变,这样就是导致每次出现的尺寸与之前不一样.如果是需要设置的比较的多,估计美工会烦死, ...

  8. Javascript设置广告和时间表和数组的学习

    <html> <head> <meta charset="utf-8"> <title></title> </he ...

  9. 运用JMX监控Tomcat/Java jvisualvm简要说明

    公司线上项目出现了java heap space 然后经过查询知晓了下面工具于是开始了尝试. visualvm能干什么:监控内存泄露,跟踪垃圾回收,执行时内存.cpu分析,线程分析... jvisua ...

  10. JAVA的安装与软件使用

    1.JAVA的安装与环境 2.练习: (1)初识java (2)使用eclipse输出自己的名字