c实现windows socket

服务端代码:

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

/*   

 * testSocketService.c   

 *   

 *  Created on: 2012-8-16   

 *      Author: 皓月繁星   

 */

#include <WINSOCK2.H>

#include <stdio.h>  

                  

#define PORT           5150 

#define MSGSIZE        1024 

                 

#pragma comment(lib, "ws2_32.lib")   

                 

int
main()   

{   

    WSADATA wsaData;   

    SOCKET sListen;   

    SOCKET sClient;   

    SOCKADDR_IN local;   

    SOCKADDR_IN client;   

    char
szMessage[MSGSIZE];   

    int
ret;   

    int
iaddrSize = sizeof(SOCKADDR_IN);   

    WSAStartup(0x0202, &wsaData);   

                 

    sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);   

                 

    local.sin_family = AF_INET;   

    local.sin_port = htons(PORT);   

    local.sin_addr.s_addr = htonl(INADDR_ANY);   

    bind(sListen, (struct
sockaddr *) &local, sizeof(SOCKADDR_IN));   

                 

    listen(sListen, 1);   

                 

    sClient = accept(sListen, (struct
sockaddr *) &client, &iaddrSize);   

    printf("Accepted client:%s:%d\n", inet_ntoa(client.sin_addr),   

            ntohs(client.sin_port));   

                 

    while
(TRUE) {   

        ret = recv(sClient, szMessage, MSGSIZE, 0);   

        szMessage[ret] = ‘\0‘;   

        printf("Received [%d bytes]: ‘%s‘\n", ret, szMessage);   

    }   

    return
0;   

  }

  

客户端代码


/*
* testSocketClient.c
*
* Created on: 2012-8-16
* Author: 皓月繁星
*/
#include <WINSOCK2.H>
#include <stdio.h>

//定义程序中使用的常量
#define SERVER_ADDRESS "127.0.0.1" //服务器端IP地址
#define PORT 5150 //服务器的端口号
#define MSGSIZE 1024 //收发缓冲区的大小
#pragma comment(lib, "ws2_32.lib")

int main()
{
WSADATA wsaData;
//连接所用套节字
SOCKET sClient;
//保存远程服务器的地址信息
SOCKADDR_IN server;
//收发缓冲区
char szMessage[MSGSIZE];
//成功接收字节的个数
int ret;

// Initialize Windows socket library
WSAStartup(0x0202, &wsaData);

// 创建客户端套节字
sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //AF_INET指明使用TCP/IP协议族;
//SOCK_STREAM, IPPROTO_TCP具体指明使用TCP协议
// 指明远程服务器的地址信息(端口号、IP地址等)
memset(&server, 0, sizeof(SOCKADDR_IN)); //先将保存地址的server置为全0
server.sin_family = PF_INET; //声明地址格式是TCP/IP地址格式
server.sin_port = htons(PORT); //指明连接服务器的端口号,htons()用于 converts values between the host and network byte order
server.sin_addr.s_addr = inet_addr(SERVER_ADDRESS); //指明连接服务器的IP地址
//结构SOCKADDR_IN的sin_addr字段用于保存IP地址,sin_addr字段也是一个结构体,sin_addr.s_addr用于最终保存IP地址
//inet_addr()用于将 形如的"127.0.0.1"字符串转换为IP地址格式
//连到刚才指明的服务器上
connect(sClient, (struct sockaddr *) &server, sizeof(SOCKADDR_IN)); //连接后可以用sClient来使用这个连接
//server保存了远程服务器的地址信息
while (TRUE) {
printf("Send:");
//从键盘输入
gets(szMessage); //The gets() functionreads characters from stdin and loads them into szMessage
// 发送数据
send(sClient, szMessage, strlen(szMessage), 0); //sClient指明用哪个连接发送; szMessage指明待发送数据的保存地址 ;strlen(szMessage)指明数据长度
}

// 释放连接和进行结束工作
closesocket(sClient);
WSACleanup();
return 0;
}

http://www.docin.com/p-111227070.html

Java mina和c++ ace做socket长连接 测试报告:

http://www.iteye.com/problems/44682

c++ RTMP server 做流媒体的

流媒体研究博客:http://www.cnblogs.com/haibindev

http://www.rtmpd.com/

https://www.google.com.hk/#newwindow=1&q=rtmpc%2B%2B&safe=strict

用HTTP方式:先通过IIS 将FLV下载到本地缓存,然后再通过NetConnection的本地连接来播放这个FLV,这种方法是播放本地的视频,并不是播放服务器的视频。因此在本地缓存里可以找到这个FLV。其优点就是服务器下载完这个FLV,服务器就没有消耗了,节省服务器消耗。其缺点就是FLV会缓存在客户端,对FLV的保密性不好。

用RTMP方式:通过NetConnection连接到FMS/Red5服务器,并实时播放服务器的FLV文件,这种方式可以任意选择视频播放点(SEEK()),并不象HTTP方式需要缓存完整个FLV文件到本地才可以任意选择播放点,其优点就是在本地缓存里是找不到这个FLV文件的。其优点就是FLV不会缓存在客户端,FLV的保密性好,其缺点就是消耗服务器资源,连接始终是实时的。

一句话,HTTP方式是本地播放,RTMP方式是服务器实时播放,因需而定。

c实现windows socket,布布扣,bubuko.com

时间: 2024-11-05 12:25:07

c实现windows socket的相关文章

【windows socket+UDPserverclient】

Windows Socket+UDPserverclient Winsock是 Windows下套接字标准.                    1.UDP socket编程:          UDP(用户数据报协议)是一个无连接.不可靠的传输数据,其特点是简单,快捷.相比与TCP,UDP不须要建立连接(不需connect.accept函数),数据发送接收之后,不须要终止连接.基于UDP的程序,避免了TCP执行的开销,在效率与速度上具有更好的表现.          UDP是无连接的,可能会

Windows Socket编程--ip地址转换

在Windows Socket编程中,需要将ip地址在网络字节顺序与主机字节顺序之间进行转换,该过程的代码如下: 1 #include <Winsock2.h> 2 #include <Ws2tcpip.h> //为了使用inet_pton()和inet_ntop()函数 3 #include <iostream> 4 5 #pragma comment(lib,"ws2_32.lib") //socket编程需要引用该库 6 7 using std

Windows Socket五种I/O模型——代码全攻略(转)

Winsock 的I/O操作: 1. 两种I/O模式 阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序.套接字 默认为阻塞模式.可以通过多线程技术进行处理. 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权.这种模式使用 起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误.但功能强大.为了解决这个问题,提出了进行I/O操作的一些I/O模型,下面介绍最常见的三种: Windows Socket五种I/O模型——代码全攻

Windows Socket编程示例-TCP示例程序

前面一部分是介绍,后面有示例 1.网络中进程之间如何通信? 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网络层的"ip地址"可以唯一标识网络中的主机,而传输层的"协议+端口"可以唯一标识主机中的应用程序(进程).这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互. 使用TCP

c++下基于windows socket的单线程服务器客户端程序

今天自己用编写了一个简单的c++服务器客户端程序,注释较详细,在此做个笔记. windows下socket编程的主要流程可概括如下:初始化ws2_32.dll动态库-->创建套接字-->绑定地址信息-->服务器进行监听/客户端连接服务器-->数据交换-->关闭套接字对象. 服务器端: 1 #include <Winsock2.h> 2 #include <Ws2tcpip.h> 3 #include <iostream> 4 5 #prag

【windows socket+HTTP服务器客户端】

Windows Socket+HTTP服务器客户端 Winsock是 Windows下套接字标准.                 1.HTTP协议:          HTTP是基于客户端/服务器的请求,响应协议.        请求:由客户端向服务器发起,指定了要从服务器获取的资源.请求包含了协议首部,指明了客户端处理能力信息,如可以处理的文件类型,支持的语言,编码方式等.        响应:服务器收到客户端的请求后,解析这个请求,构造响应,并发送给客户端.响应同样包含了协议首部,指明了服

【windows socket+UDP服务器客户端】

Windows Socket+UDP服务器客户端 Winsock是 Windows下套接字标准.                    1.UDP socket编程:          UDP(用户数据报协议)是一个无连接,不可靠的数据传输,其特点是简单,快捷.相比与TCP,UDP不需要建立连接(不需connect.accept函数),数据发送接收之后,不需要终止连接.基于UDP的程序,避免了TCP运行的开销,在效率与速度上具有更好的表现.          UDP是无连接的,可能会有数据的丢失

【windows socket编程+服务器客户端】

Windows Socket编程与服务器客户端示例 Winsock是 Windows下套接字标准. Socket套接字基于计算机网络,提供同一系统上不同进程或由局域网连接在一起的不同机器上的进程间通讯功能.如下图: 套接字通过IP地址,Port端口号标识,通过这个标识可以在整个局域网定位一个套接字,通过套接字进程便可以相互传输数据.如:进程A与进程B之间欲通过套接字通信,首先进程A创建一个有IP地址,端口号唯一标识的套接字,进程B同样创建一个有IP地址,端口号唯一标识的套接字,进程A,B便可以通

【Windows socket+IP+UDP+TCP】网络基础

Windows Socket+网络 Winsock是 Windows下套接字标准.          Winsock 编程分为UDP[Windows socket + UDP],TCP[Windows socket + TCP]编程.Windows socket 建立在网络基础之上,UDP编程採用用户数据报协议(User Datagram Protocol ,UDP),TCP编程採用传输控制协议(Transmission Control Protocol,TCP).UDP.TCP不同的特性.适应

Windows socket之最简单的socket程序

原文:Windows socket之最简单的socket程序 最简单的服务器的socket程序流程如下(面向连接的TCP连接 ): 1. WSAStartup(); 初始化网络库的使用. 2. socket(); 获得一个socket. 3. bind(); 把获得的socket绑定到一个ip 和端口.既然作为服务器, ip通常为本地IP127.0.0.1. 4. listen(); 监听已经绑定了指定端口的socket. 5. accept(); 接受一个来自客户端的连接. accept()返