【网络编程】——windows socket 编程
测试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 编程的更多相关文章
- linux tcp/ip编程和windows tcp/ip编程差别以及windows socket编程详解
最近要涉及对接现有应用visual c++开发的tcp客户端,花时间了解了下windows下tcp开发和linux的差别,从开发的角度而言,最大的差别是头文件(早期为了推广尽可能兼容,后面越来越扩展, ...
- Windows Socket 编程_单个服务器对多个客户端简单通讯
单个服务器对多个客户端程序: 一.简要说明 二.查看效果 三.编写思路 四.程序源代码 五.存在问题 一.简要说明: 程序名为:TcpSocketOneServerToMulClient 程序功能:实 ...
- 网络协议 11 - Socket 编程(下):眼见为实耳听为虚
系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - 从物理层到 MAC 层 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校 网 ...
- 多线程编程以及socket编程_Linux程序设计4chapter15
看了Linux程序设计4中文版,学习了多线程编程和socket编程.本文的程序参考自Linux程序设计4的第15章. 设计了一个客户端程序,一个服务端程序.使用TCP协议进行数据传输. 客户端进程创建 ...
- 第九章:Python高级编程-Python socket编程
第九章:Python高级编程-Python socket编程 Python3高级核心技术97讲 笔记 9.1 弄懂HTTP.Socket.TCP这几个概念 Socket为我们封装好了协议 9.2 cl ...
- 关于网络协议和socket编程基本概念
TCP协议可以说已经是IT人耳熟能详的协议,最近在学习socket网络编程时后重新温习一下这个协议,针对一些问题做了一些总结,很多理解可能还不是很准确. 1. 协议是什么?所谓的各种网络协议无非是一种 ...
- iOS网络编程笔记——Socket编程
一.什么是Socket通信: Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换.这个双向连路的一端称为socket.socket通常用来实现客户方和服务方的连接.socket是T ...
- 网络协议 10 - Socket 编程(上):实践是检验真理的唯一标准
系列文章传送门: 网络协议 1 - 概述 网络协议 2 - IP 是怎么来,又是怎么没的? 网络协议 3 - 从物理层到 MAC 层 网络协议 4 - 交换机与 VLAN:办公室太复杂,我要回学校 网 ...
- java网络编程之Socket编程
概念 网络编程分为BIO(传统IO).NIO.AIO.Socket编程属于BIO这种传统IO. InetAddress java.net.InetAddress是JAVA中管理IP地址的类,常用 pu ...
- C#网络编程:Socket编程
套接字简介:套接字最早是Unix的,window是借鉴过来的.TCP/IP协议族提供三种套接字:流式.数据报式.原始套接字.其中原始套接字允许对底层协议直接访问,一般用于检验新协议或者新设备问题,很少 ...
随机推荐
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型.长整型.浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明. ● itoa():将 ...
- java中Class.getResource用法
用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉颇深,大常最经常用的,就是用JAVA的File类,如要取得c:/test.txt文件,就会这样用File file ...
- 我的Win32开发抉择,Delphi老将复出
这两天在开发公司的一个教学软件客户端,因为要考虑到给PHP.平面设计等班的同学使用,为了避免安装.Net Framework.JRE的麻烦(如果把.Net Framework.JRE打包到安装包,也会 ...
- 【基础知识】.Net基础加强09天
委托: 1. 委托是一种数据类型,像类一样{可以声明委托变量类型} 2. deleate关键字定义委托 : public delegate void MethodDelegate();//这就是定义了 ...
- C++11 并发指南系列
本系列文章主要介绍 C++11 并发编程,计划分为 9 章介绍 C++11 的并发和多线程编程,分别如下: C++11 并发指南一(C++11 多线程初探)(本章计划 1-2 篇,已完成 1 篇) C ...
- 深入理解java虚拟机【Java虚拟机垃圾收集器】
Java堆内存被划分为新生代和年老代两部分,新生代主要使用复制和标记-清除垃圾回收算法,年老代主要使用标记-整理垃圾回收算法,因此java虚拟中针对新生代和年老代分别提供了多种不同的垃圾收集器,JDK ...
- Spec模板
Spec模板 一.概述 1.项目背景 图书馆在正常运营中面对大量书籍.读者信息以及两者间相互联系产生的借书信息.还书信息.现有的人工记录方法既效率低又错误过多,大大影响了图书馆 ...
- .NET面试题大全,包括微软、华为、中兴等大企业的面试真题
简要地写出一个.NET Remoting的示例 [考点].NET Remoting程序的原理,.NET Remoting的基本编写方法.[出现频率]★★☆☆☆[解答]在VS 2008中添加新的类库项目 ...
- [自制简单操作系统] 1、从0-1到汇编再到c语言的奥秘
目录: 1.用0-1编写最简单的操作系统 2.用汇编改写上面0-1程序 2.1 只用DB的汇编改写版 2.2 加入RESB汇编的改写版 2.3 进一步使用汇编替换0-1文件 2.4 核心程序也用 ...
- 往linux上传、下载
http://skypegnu1.blog.51cto.com/8991766/1538371