- 浏览: 4332823 次
- 性别:
- 来自: 湛江
博客专栏
-
SQLite源码剖析
浏览量:79404
-
WIN32汇编语言学习应用...
浏览量:68361
-
神奇的perl
浏览量:101484
-
lucene等搜索引擎解析...
浏览量:281140
-
深入lucene3.5源码...
浏览量:14597
-
VB.NET并行与分布式编...
浏览量:65552
-
silverlight 5...
浏览量:31311
-
算法下午茶系列
浏览量:45199
文章分类
最新评论
-
yoyo837:
counters15 写道目前只支持IE吗?插件的东西是跨浏览 ...
Silverlight 5 轻松开启绚丽的网页3D世界 -
shuiyunbing:
直接在前台导出方式:excel中的单元格样式怎么处理,比如某行 ...
Flex导出Excel -
di1984HIT:
写的很好~
lucene入门-索引网页 -
rjguanwen:
在win7 64位操作系统下,pygtk的Entry无法输入怎 ...
pygtk-entry -
ldl_xz:
http://www.9958.pw/post/php_exc ...
PHPExcel常用方法汇总(转载)
1.server
deepfuture@deepfuture-laptop:~/private/mytest$ ./testtcps
server wait....
............................
server read :deepfuture.iteye.com
server send :hello
.....
server read :deepfuture.iteye.com
server send :hello
2.client
deepfuture@deepfuture-laptop:~/private/mytest$ ./testtcpc
client send....
client send :deepfuture.iteye.com
client read :hello
deepfuture@deepfuture-laptop:~/private/mytest$ ./testtcpc
client send....
client send :deepfuture.iteye.com
client read :hello
deepfuture@deepfuture-laptop:~/private/mytest$
3.source
1)server
#include <stdio.h> #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> //deepfuture.iteye.com ssize_t readn(int fd,void *ptr,size_t maxcn){//读取n个字符,maxc为读取的数目 size_t noreadcn,readcn; char *buf=ptr; noreadcn=maxcn; while(noreadcn>0){ if ( (readcn=read(fd,buf,noreadcn))<0){//读数据 if (errno==EINTR) {//数据读取前,操作被信号中断 perror("中断错误"); readcn=0; } else {return -1;}//无法修复错误,返回读取失败 } else if(readcn==0) break;//EOF noreadcn-=readcn;//读取成功,但是如果读取的字符数小于maxc,则继续读,因为可能数据还会继续通过网络送过来 buf+=readcn; if (*buf==0) break;//如果读到字符串结尾标志则退出,必须有这句,否则会死循环 } return (maxcn-noreadcn); } ssize_t writen(int fd,void *ptr,size_t maxcn){//写入n个字符 size_t nowritecn,writecn; char *buf=ptr; nowritecn=maxcn; while(nowritecn>0){ if((writecn=write(fd,buf,nowritecn))<=0){//写数据 if (errno==EINTR) {//数据写前,操作被信号中断 perror("中断错误"); writecn=0; } else {return -1;}//无法修复错误,返回读取失败 } nowritecn-=writecn; buf+=writecn; } return (maxcn-nowritecn); } int main(void){ int fd; int addresslen; struct sockaddr_in address;//地址信息结构 int pid; int rc; fd_set fdset; //建立socket fd=socket(AF_INET,SOCK_STREAM,0);//fd为socket if (fd==-1){//错误,类型从errno获得 perror("error");//perror先输出参数,后跟":"加空格,然后是errno值对应的错误信息(不是错误代码),最后是一个换行符。 } //bind 到socket fd address.sin_family=AF_INET;//IPV4协议,AF_INET6是IPV6 address.sin_addr.s_addr=htonl(INADDR_ANY);//l表示32位,htonl能保证在不同CPU的相同字节序 address.sin_port=htons(1253);//端口号,s表示16位 addresslen=sizeof(address); bind(fd,(struct sockaddr *)&address,addresslen);//bind //建立socket队列,指定最大可接受连接数 rc=listen(fd,32);//最多接收32个连接,开始监听 //int listen(int sockfd, int backlog)返回:0──成功, -1──失败 //内核会在自己的进程空间里维护一个队列以跟踪这些完成的连接但服务器进程还没有接手处理或正在进行的连接 if (rc==-1) { perror("listen error");//监听失败 exit(1); } printf("server wait....\n"); while(1){ struct sockaddr_in clientaddress; int address_len; int client_sockfd; char mybuf[100]; char *buf="hello\n"; struct timeval timeout;//超时结构体 //超时为2秒 timeout.tv_sec=1; timeout.tv_usec=0; //设置fdset FD_ZERO(&fdset);//清除fdset FD_CLR(fd,&fdset);//清除fd的标志 FD_SET(fd,&fdset);//设置标志 //select if ((select(fd+1,&fdset,NULL,NULL,&timeout))<0){ perror("select error"); fflush(stdout); } //等待连接,使用新的进程或线程来处理连接 fflush(stdout); address_len=sizeof(clientaddress); if(FD_ISSET(fd,&fdset)){ //如果有连接到来 client_sockfd=accept(fd,(struct sockaddr *)&clientaddress,&address_len);//client_sockfd可理解为一个文件句柄,能用read和write操作。client_address是客户端信息结构 deepfuture.iteye.com //fork进程来处理每个客户的连接 pid=fork(); if (pid<0){//错误 printf("error:%s\n",strerror(errno));//strerror将errno映射为一个错误信息串 deepfuture.iteye.com close(client_sockfd); exit(1); } if (pid==0){ //子进程处理每个客户端的数据 close(fd);//子进程关闭不需要它处理的监听资源 //读取数据 deepfuture.iteye.com bzero(mybuf,100); readn(client_sockfd,(void *)mybuf,100); printf("\nserver read :%s",mybuf); //发送数据 writen(client_sockfd,(void *)buf,strlen(buf)+1); printf("\nserver send :%s",buf); close(client_sockfd); exit(0); } else {//父进程 close(client_sockfd);//父进程不处理客户端连接,因此关闭,但并不意味着把子进程的处理句柄关闭,因为子进程继承了父进程的client_sockfd资源 deepfuture.iteye.com } }else{ printf("."); fflush(stdout); } } }
2) client
#include <stdio.h> #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> //deepfuture.iteye.com ssize_t readn(int fd,void *ptr,size_t maxcn){//读取n个字符,maxc为读取的数目 size_t noreadcn,readcn; char *buf=ptr; noreadcn=maxcn; while(noreadcn>0){ if ( (readcn=read(fd,buf,noreadcn))<0){//读数据 if (errno==EINTR) {//数据读取前,操作被信号中断 deepfuture.iteye.com perror("中断错误"); readcn=0; } else {return -1;}//无法修复错误,返回读取失败 } else if(readcn==0) break;//EOF deepfuture.iteye.com noreadcn-=readcn;//读取成功,但是如果读取的字符数小于maxc,则继续读,因为可能数据还会继续通过网络送过来 buf+=readcn; if (*buf==0) break; //如果读到字符串结尾标志则退出,必须有这句,否则会死循环 deepfuture.iteye.com } return (maxcn-noreadcn); } ssize_t writen(int fd,void *ptr,size_t maxcn){//写入n个字符 size_t nowritecn,writecn; char *buf=ptr; nowritecn=maxcn; while(nowritecn>0){ if((writecn=write(fd,buf,nowritecn))<=0){//写数据 if (errno==EINTR) {//数据写前,操作被信号中断 perror("中断错误"); writecn=0; } else {return -1;}//无法修复错误,返回读取失败 } nowritecn-=writecn; buf+=writecn; } return (maxcn-nowritecn); } int main(void){ int fd; int addresslen; struct sockaddr_in address;//地址信息结构 deepfuture.iteye.com int pid; char mybuf[100]; char *buf="deepfuture.iteye.com\n"; int rc; fd=socket(AF_INET,SOCK_STREAM,0);//建立socket if (fd==-1){//错误,类型从errno获得 perror("error");//perror先输出参数,后跟":"加空格,然后是errno值对应的错误信息(不是错误代码),最后是一个换行符。 deepfuture.iteye.com } printf("client send....\n"); fflush(stdout); //连接 address.sin_family=AF_INET;//IPV4协议,AF_INET6是IPV6 deepfuture.iteye.com address.sin_addr.s_addr=inet_addr("127.0.0.1");//l表示32位,htonl能保证在不同CPU的相同字节序 address.sin_port=htons(1253);//端口号,s表示16位 deepfuture.iteye.com addresslen=sizeof(address); rc=connect(fd,(struct sockaddr *)&address,addresslen);//连接服务器 deepfuture.iteye.com if (rc==-1){//rc=0成功,rc=-1失败 deepfuture.iteye.com perror("连接错误"); exit(1); } //发送数据 writen(fd,(void *)buf,strlen(buf)+1); printf("client send :%s\n",buf); //读取数据 bzero(mybuf,100); readn(fd,(void *)mybuf,100); printf("client read :%s\n",mybuf); close(fd); exit(0); }
发表评论
-
c++科学计算库
2013-06-05 21:58 4323http://www-900.ibm.com/develop ... -
wxwidgets-学习心得(2)
2013-05-14 22:17 2183#include <wx/wx.h> #inc ... -
wxwidgets学习心得(1)
2013-05-13 12:01 2403#include <wx/wx.h> / ... -
gtk+学习笔记-2
2013-04-11 11:16 1971对gtk+初始化的检查 gtk_init_check(& ... -
gtk+学习笔记-1
2013-04-11 10:50 1609#include <stdlib.h> #i ... -
lisp-基本输入,输出,read,print
2013-02-09 22:51 3151* (say-hello)ssssssss"wha ... -
lisp-push
2013-02-09 20:41 1483* (defvar *mylist* (list 11 2 ... -
lisp-find
2013-02-09 14:08 1466* (find `wang `((wang 22)(li 2 ... -
lisp-交换列表中2个元素
2013-02-08 20:10 2282* (defvar *mylist* (list 1 2 ... -
lisp-求最大和最小数,if的使用
2013-02-08 17:04 2609* (defun maxnum(x y) (if (> ... -
lisp-关于mapcar、apply、assoc 列表操作
2013-02-08 12:53 64340[2] (mapcar #'+ `(22 11 55) ... -
lisp-progn
2013-02-05 09:43 2078* (if (oddp 5) (progn (setf * ... -
lisp-列表
2013-02-01 21:33 1590This is experimental prerelea ... -
lisp-复数
2013-01-30 22:23 1313* (+ #C(28 10) 22) #C(50 10 ... -
lisp-局部变量和局部函数
2013-01-30 22:07 2141* (flet ((add (a b) (+ a b))) ... -
lisp强大
2013-01-30 21:02 2811以前就听说过Lisp被很多人认为是世界上最好的语言 ,但是它 ... -
lisp-猜数字升级版
2013-01-30 18:03 17750[2] (defun mystart() (defpara ... -
lisp-猜数字算法与全局函数、变量
2013-01-30 17:55 1608* (defvar *big* 100) *BIG* ... -
c++中stack,deque,queue
2012-08-30 21:36 3700STL包含一些为满足特殊需求而设计的容器,他们提供简单而清晰的 ... -
(转)去掉c++的变量的const类型
2012-04-24 16:02 14316const_cast (expression) const_ ...
相关推荐
arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息 start 程序名或命令 /max 或/min 新开一个新窗口并最大化(最小化)运行某程序或命令 mem 查看cpu...
vsftp的含义就是Very Security Ftp,下面就简要的说一下它的配置和使用方法,通过本文的介绍也希望您能了解在Linux下配置一个网络服务的基本过程 1.相关配置文件 /etc/vsftpd.conf,vsftpd.ftpuser,vsftpd.user_...
-l -s 指定发送数据包的TTL生存时间 -i -t 指定超时时间(毫秒) -w -- 指定发送时间间隔 -- -i 网络安全实验---NMAP扫描全文共8页,当前为第2页。网络安全实验---NMAP扫描全文共8页,当前为第2页。洪泛ping 网络...
netstat -p 协议名 例:netstat -p tcq/ip 查看某协议使用情况(查看tcp/ip协议使用情况) netstat -s 查看正在使用的所有协议使用情况 nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的...
Action.c(13):错误-27727: Step download timeout (120 seconds) has expired when downloading resource(s). Set the "Step Timeout caused by resources is a warning" Run-Time Setting to Yes/No to have this ...
2.2 Linux下的G C C 编译器工具集.......................................... 19 2.2.1 G C C 简介......................................................19 2 . 2 . 2 编译程序的基本知识.........................
在图形界面下我们看到了程序连接地址“.\xscan.exe”,这实际上就是xscanner的控制台程序,也就是说图形窗口只是将控制台扫描器的有关参数设置做了“傻瓜化”处理,程序运行真正执行的还是控制台程序。因此学习...
这一点貌似在 Linux 和 Mac OS X 下不用操心,在 Windows 下有可能遇到需要安装驱动的情况,确认这一点可以右键「计算机」-「属性」,到「设备管理器」里查看相关设备上是否有黄色感叹号或问号,如果没有就说明驱动...
基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...
Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多...
,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 ...
,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 ...
,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 ...
,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 ...
,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 ...
,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 ...
,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 ...
,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 ...