文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院程序开发C/C++socket编程原理
精品推荐
特别推荐
·C语言编程易犯毛病集合
·C语言编程常见问题解答(目录)
·C#程序开发中的常用函数汇总
·C#数据库操作的三种经典用法
·C/C++笔试、面试题目大汇总
·Beej的网络socket编程指南
·socket编程原理
·C语言的常用库函数使用方法分析及用途
·在C语言中如何处理时间和日期
·C++设计模式之Singleton
·VC++动态链接库编程之MFC扩展 DLL
·TCP/IP网络重复型服务器通信软件的设计
·DirectX游戏开发入门
·经典与现代的结合:在MFC中集成RAD .NET框架
·Windows API-GDI入门基础知识详解(2)
·Visual C++ 入门精解
·C#基础概念二十五问
·用C#实现pdf文件的完整性验证
·成为嵌入式程序员应知道的0x10个问题
·TCP/IP编程实现远程文件传输
热点TOP10
·C#基础概念二十五问
·TCP/IP编程实现远程文件传输
·socket编程原理
·Beej的网络socket编程指南
·如何用C#编写文本编辑器
·C/C++笔试、面试题目大汇总
·c#的random shuffle
·C#编写的windows计算器-源代码
·改编 的 C版 职工管理系统
·C语言的常用库函数使用方法分析及用途
·C# GridView 排序及分页
·C#源码读取excel数据到程序中-SQL SERVER-到dataset中
·Visual C++ 实现数字化图像的分割
·C语言编程常见问题解答(目录)
·C语言图形函数
·扑克牌的发牌程序(用伪随机数实现)
·飞机订票系统设计
·用C#下的Raw Socket编程实现网络封包监视
·DirectX游戏开发入门
·Windows下C语言网络编程快速入门

socket编程原理

日期:2007年7月24日 作者: 查看:[大字体 中字体 小字体]




/* 找出指定的端口号并打印出来 */

length = sizeof(server);

if (getsockname(sock, (struct sockaddr *)&server, &length) < 0) {

perror(“getting socket name”);

exit(1);

}

printf(“socket port #%d
”, ntohs(server.sin_port));


/* 开始接收连接 */

listen(sock, 5);

len = sizeof(struct sockaddr);

do {

msgsock = accept(sock, (struct sockaddr *)&tcpaddr, (int *)&len);

if (msgsock == -1)

perror(“accept”);

else do{

memset(buf, 0, sizeof(buf));

if ((rval = recv(msgsock, buf, 1024)) < 0)

perror(“reading stream message”);

if (rval == 0)

printf(“ending connection
”);

else

printf(“-->%s
”, buf);

}while (rval != 0);

closesocket(msgsock);

} while (TRUE);


/* 因为这个程序已经有了一个无限循环,所以套接字“sock”从来不显式关闭。然而,当进程被杀死或正常终止时,所有套接字都将自动地被关闭。*/

exit(0);

}

客户方程序:

/* File Name: streamc.c */

#include

#include

#define DATA “half a league, half a league ...”

/* 这个程序建立套接字,然后与命令行给出的套接字连接;连接结束时,在连接上发送

一个消息,然后关闭套接字。命令行的格式是:streamc 主机名 端口号

端口号要与服务器程序的端口号相同 */

main(argc, argv)

int argc;

char *argv[ ];

{

int sock;

struct sockaddr_in server;

struct hostent *hp, *gethostbyname( ;

char buf[1024];


/* 建立套接字 */

sock = socket(AF_INET, SOCK_STREAM, 0);

if (sock < 0) {

perror(“opening stream socket”);

exit(1);

}


/* 使用命令行中指定的名字连接套接字 */

server.sin_family = AF_INET;

hp = gethostbyname(argv[1]);

if (hp == 0) {

fprintf(stderr, “%s: unknown host
”, argv[1]);

exit(2);

}

memcpy((char*)&server.sin_addr, (char*)hp->h_addr, hp->h_length);

sever.sin_port = htons(atoi(argv[2]));


if (connect(sock, (struct sockaddr*)&server, sizeof(server)) < 0) {

perror(“connecting stream socket”);

exit(3);

}


if (send(sock, DATA, sizeof(DATA)) < 0)

perror(“sending on stream socket”);

closesocket(sock);

exit(0);

}



2.5 一个通用的实例程序
在上一节中,我们介绍了一个简单的socket程序实例。从这个例子我们可以看出,使用socket编程几乎有一个模式,即所有的程序几乎毫无例外地按相同的顺序调用相同的函数。因此我们可以设想,设计一个中间层,它向上提供几个简单的函数,程序只要调用这几个函数就可以实现普通情考网考网下的数据传输,程序设计者不必太多地关心socket程序设计的细节。

本节我们将介绍一个通用的网络程序接口,它向上层提供几个简单的函数,程序设计者只要使用这几个函数就可以完成绝大多数情考网考网下的网络数据传输。这些函数将socket编程和上层隔离开来,它使用面向连接的流式套接字,采用非阻塞的工作机制,程序只要调用这些函数查询网络消息并作出相应的响应即可。这些函数包括:

l InitSocketsStruct:初始化socket结构,获取服务端口号。客户程序使用。

l InitPassiveSock:初始化socket结构,获取服务端口号,建立主套接字。服务器程序使用。

l CloseMainSock:关闭主套接字。服务器程序使用。

l CreateConnection:建立连接。客户程序使用。

l AcceptConnection:接收连接。服务器程序使用。

l CloseConnection:关闭连接。

l QuerySocketsMsg:查询套接字消息。

l SendPacket:发送数据。

l RecvPacket:接收数据。

2.5.1 头文件

上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] 下一页 




上一篇:c++中函数重载的相关知识

下一篇:用BCB开发有身份认证功能的Email程序

socket编程原理 相关文章:
·6招教你准确揣摩他人心理
·人生哲理名言生活哲理短文
·改变一生的100句至理名言
·果然更高效!Vista磁盘碎片整理亲历记
·不再怕电脑病毒 电脑中毒后的6招处理方法
·轻松做画家!用Photoshop把照片处理成逼真的素描画
·人生哲理小语
·socket编程原理
·仅用U盘就可以去除XP管理员密码
·Photoshop将肖像照片处理为超酷个性海报
socket编程原理 相关软件:
·曾仕强 - 超世纪大易管理学(3-6)
·周恩来总理经典图片集
·时代光华 销售管理课程(1-5)
·公司企业网站管理系统模板功能强大版
·俞敏洪做人道理mp3
·国家地理杂志100张最佳照片合辑
·余世维《成功经理人讲座》完整电子书
·成就你一生的100个哲理
·时代光华-卓越的现场管理 5S推行实务(刘敏欣)(下)
·冠军足球经理4(Championship Manager 4)中文版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn