【网络编程】——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协议族提供三种套接字:流式.数据报式.原始套接字.其中原始套接字允许对底层协议直接访问,一般用于检验新协议或者新设备问题,很少 ...
随机推荐
- ubuntu卸载java
Try this command: java -version If 1.6* comes then try: sudo apt-get autoremove openjdk-6-jre If 1.7 ...
- ASP.NET前端解决方案之一:Ext.Net入门随笔1
最近因为公司需要,进一步研发了Ext.Net技术,这里先做一个简明的介绍,给自己和大家记录一个初步的概念. 什么是Ext Ext就是ExtJS,引用下百度的解释:“ExtJS是一种主要用于创建前端用户 ...
- Asp.Net Web API 2第十一课——在Web API中使用Dependency Resolver
前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html 本文主要来介绍在Asp.N ...
- [游戏学习22] MFC 井字棋 双人对战
>_<:太多啦,感觉用英语说的太慢啦,没想到一年做的东西竟然这么多.....接下来要加速啦! >_<:注意这里必须用MFC和前面的Win32不一样啦! >_<:这也 ...
- 单线程&浏览器多线程
知乎答案:http://www.zhihu.com/question/31982417/answer/54136684 copy大牛的好文:from http://www.cnblogs.com/Ma ...
- 使用grunt合并压缩js、css文件
需要了解的知识: 1.nodejs的安装与命令行使用 2.nodejs安装应用 3.grunt的初步了解 本文已假定读者已经熟悉以上知识. 好,我们继续: 任务1:将src目录下的所有zepto及插件 ...
- 固定表头/锁定前几列的代码参考[JS篇]
引语:做有难度的事情,才是成长最快的时候.前段时间,接了一个公司的稍微大点的项目,急着赶进度,本人又没有独立带过队,因此,把自己给搞懵逼了.总是没有多余的时间来做自己想做的事,而且,经常把工作带入生活 ...
- 修改JSONArray里所有key的值
下面举一个代码的列子目的是实现如下功能: [{"userId":1,"userName":"plf"},{"userId" ...
- Leetcode 219 Contains Duplicate II STL
找出是否存在nums[i]==nums[j],使得 j - i <=k 这是map的一个应用 class Solution { public: bool containsNearbyDuplic ...
- DataWindow.Net 2.5 配置
在用过的所有的开发工具中,感觉最简单好用的就数PB了,他的DataWindow最方便,拖拖拽拽就把报表做好了,可惜现在很少人有用了.现在C/S系统一般用C#来做,但是做报表的时候总感觉没有DataWi ...