2010年12月25日

摘要: 【摘要】 本文介绍了Linux平台下的Xwindow图形窗口编程工具GTK,并给出了用GTK编程的基本要素和步骤。【关键词】GTK,回调函数,消息处理器,调节器GTK(GIMP Toolkit)是一个图形用户编程的接口工具。它注册完全免费,所以用来开发自由软件或商业软件都不需要花费什么。现在很多Linux集成系统都已经将GTK1.2版本打包进去了。包括RedHat Linux 6.0以上版本,还有中文化的Turbo Linux等等。它也越来越被普遍的应用于UNIX系统编程。还有一个组件叫Glib,它包含了一些标准应用的新扩展用来提高GTK的兼容性。用于Linux系统的某些函数可能不适合标准的U 阅读全文
posted @ 2010-12-25 22:27 yming0221 阅读(517) 评论(0) 推荐(0)
摘要: 最近看了一些网络编程的书籍,一直以来总感觉网络编程神秘莫测,其实网络编程入门还是很容易学的,下面这些代码是我在linux下编写的,已经运行过了,编译之后就可以运行了。有不足之处希望大家多多指出,共同学习交流。 套接字是一种进程间的通信的方法,不同于以往介绍的进程间通信方法的是,它并不局限于同一台计算机的资源,例如文件系统空间,共享内存或者消息队列。套接字可以认为是对管道概念的扩展——一台机器上的进程可以使用套接字与另一台机器上的进程通信。因此客户与服务器可以分散在网络中。同一台机器上的进程间也可以用套接字通信。套接字是一种通信机制,客户/服务器系统既可以在本地单机上运行,也可以在网络中运行。套 阅读全文
posted @ 2010-12-25 22:25 yming0221 阅读(256) 评论(0) 推荐(0)
摘要: 1. socket()2. bind()3. connect()4. listen()5. accept()6. send()和recv()7. sendto()和recvfrom()8. close()和shutdown()9. getpeername()10. gethostname()socket()------------------------------------------------ 我们使用系统调用socket()来获得文件描述符: #include <sys/types.h> #include <sys/socket.h> int socket(i 阅读全文
posted @ 2010-12-25 22:19 yming0221 阅读(115) 评论(0) 推荐(0)
摘要: 在这上面花了一周多,先是思路上的致命错误,导致浪费较多时间,不过调整下很快的完成了自己所需要的代码。期间碰到的几个比较大的问题自己做下记录:1、bind函数的理解错误,这个一般是在服务端用来绑定端口,而我一直以为可以用函数inet_addr()指定接收的IP,其实这里只是假如你有双网卡的时候,有需要可以绑定其中一个IP,htonl(INADDR_ANY)或0最实在。贴下一段初始化的代码bzero(&socket_info.server_addr, sizeof(socket_info.server_addr)); socket_info.server_addr.sin_family = 阅读全文
posted @ 2010-12-25 22:18 yming0221 阅读(234) 评论(0) 推荐(0)
摘要: 什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的.. 阅读全文
posted @ 2010-12-25 22:15 yming0221 阅读(286) 评论(0) 推荐(0)
摘要: TCP协议: 服务器端:tcp_server.c #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main(int argc, char *argv[]) { int s; int fd; int len; struct sockaddr_in my_addr; //服务器网络地址结构体 struct sockaddr_in remote_addr; 阅读全文
posted @ 2010-12-25 22:10 yming0221 阅读(124) 评论(0) 推荐(0)
摘要: 本文编的是echo服务器示例程序,当收到客户端的数据,服务器把数据不经加工地发送给客户。采用TCP连接,采用端口8080进行设计,在整个过程中主要涉及socket的通信。首先建立一个 socket,代码如下:int socketfd;socketfd = socket(AF_INET, SOCK_STREAM, 0);socket函数是我们写socket程序遇到的第一个函数,它在指定的协议上创建一个socket,它的函数说明如下所示:#includeint socket ( int AddressFamily, int Type, int Protocol)其中:AddressFamily参数 阅读全文
posted @ 2010-12-25 22:05 yming0221 阅读(459) 评论(0) 推荐(0)
摘要: 全文针对linux环境。tcp/udp两种server种,tcp相对较复杂也相对比较常用。本文就从tcp server开始讲起。先从基本说起,看一个单线程的网络模型,处理流程如下:socket-->bind-->listen-->[accept-->read-->write-->close]-->close[]中代码循环运行,[]外的是对监听socket的处理,[]内的是对accept返回的客户socket的处理。这些系统调用的参数以及需要的头文件等,只需要在linux下man就好。一、注意事项。(1)包裹宏使用。这些系统调用返回-1表示失败。检测系统 阅读全文
posted @ 2010-12-25 22:02 yming0221 阅读(214) 评论(0) 推荐(0)
摘要: 本章主要列举服务器程序的各种网络模型,示例程序以及性能对比后面再写。一、分类依据。服务器的网络模型分类主要依据以下几点(1)是否阻塞方式处理请求,是否多路复用,使用哪种多路复用函数(2)是否多线程,多线程间如何组织(3)是否多进程,多进程的切入点一般都是accept函数前二、分类。首先根据是否多路复用分为三大类:(1)阻塞式模型(2)多路复用模型(3)实时信号模型三、详细分类。1、阻塞式模型根据是否多线程分四类:(1)单线程处理。实现可以参见http://www.cppblog.com/CppExplore/archive/2008/03/14/44509.html后面的示例代码。(2)一个请 阅读全文
posted @ 2010-12-25 22:00 yming0221 阅读(163) 评论(0) 推荐(0)

导航