linux下使用read读取socket数据时间较长 [问题点数:20分,结帖人weixin_40290083]

Bbs2
本版专家分:119
结帖率 33.33%
Bbs2
本版专家分:291
Bbs2
本版专家分:119
Bbs1
本版专家分:0
linux socket 读取套接字问题
-
求助: linux服务器socket read或write 出现errno=5的错误
如题,c写的一个<em>socket</em>网关服务器和内网的一个逻辑服进行通讯。系统版本是centos6.5 x64 观察下来如果经常性的有客户端和网关交互(网关把客户端消息转给内网服务器,或是内网服通过网关发送消
j2me socket read数据
[code=Java]System.out.println("Response stream:");rnint le=0;rnbyte[] buf=new byte[15];rnint i=0;rnwhile((le=is.<em>read</em>(buf, 0, buf.length))!=-1)rnSystem.out.println("fffffffffffffffffffff"+i++);rnSystem.out.println(new String(buf,0,le));rnrnSystem.out.println("aaaaaaaaaaaaaaa");[/code]rnrnrn我在用上面的方法<em>读取</em><em>数据</em>的时候,可以打印"fffffffffffffff"为什么不能打印"aaaaaaaaaaaa"rnrn还有一个问题就是,如果服务器发送的<em>数据</em>过长,用下面的方法为什么得不到这个<em>数据</em>,只是执行到了 while就不往后面执行,rn大家有上面来得到服务器的<em>数据</em>的??????rn[code=Java]byte[] b = new byte[1024];rnint len = 0;rnByteArrayOutputStream baos = new ByteArrayOutputStream();rnDataOutputStream dos = new DataOutputStream(baos);rnwhile ((len = is.<em>read</em>(b)) != -1) rn dos.write(b, 0, len);rnrnbyte[] data = baos.toByteArray();rnString strxml = new String(data, "utf-8");rnSystem.out.println(strxml );[/code]
Linux下读取RTC时间
可以在Linux系统下<em>读取</em>RTC芯片的内部<em>时间</em>,同时实现了<em>读取</em>系统内部自身<em>时间</em>的功能。亲测在Ubuntu下可用!
C socket read不到数据
我在用C编写一个服务器端和客户端用来发送文件,但是<em>read</em>不到<em>数据</em>,我sleep三秒之后又能接收到<em>数据</em>了,这是为什么啊
http请求时间较长
正常情况下,需要请求http连接,通过得到的返回<em>数据</em>进行运算。现在需要加一个离线模式,在连不上网的情况下也要保证程序运行,Stream txt; txt = request.GetRequestStream(); 这句话运行<em>时间</em>过长,应该怎么解决呢??
linux socket read函数的读取问题
用<em>read</em>函数去<em>读取</em>串口<em>数据</em> 为何<em>read</em>函数的第三个参数设置的数越大的时候<em>read</em>到<em>数据</em>就越少呢(第三个数越大,往image.image文件里写入的<em>数据</em>就越少) why? 我<em>读取</em>的内容是传过来的一张jpeg格式的图片内容rnrnwhile (1)rn rn of.open("image.image", ios::app|ios::out);rn if (of.is_open())rn rn res = <em>read</em>(fd, buf, 1);设置成1的时候<em>读取</em>的<em>数据</em>算是比较完整了rn buf[res] = '\0';rn string str = buf;rn of<
Linux下使用select处理socket数据
IO口复用   以前写的服务端都是阻塞+多线程模型 <em>socket</em>—–>bind——>listen——>循环accept——>客户端连接——>创建进程或者线程接受<em>数据</em>。显然当有大量长连接时,会创建大量的进程或者线程消耗大量系统资源。   IO口复用简单的说就是一个线程中处理多个文件描述符连接。设置好我们关注的文件描述符后。系统会循环查询文件描述符是否可读、可写、或者有异常,当查询到有一个满足时就
linux下c语言编程,使用socket发送文件和数据
这个程序<em>使用</em>的是多线程机制+缓冲机制。 服务端会创建一个子线程来对应一个客户端,这样就可以实现多个客户端同时在线,客户端会有一个队列,用于循环<em>读取</em>的文件的缓冲机制。 这个程序默认是把接受的文件放在当前目录下的。
linux使用read函数实现的按行读取readline
由于<em>linux</em>实验需要用到这个函数,但是又不太想用getline和fgets所以直接写了一个<em>read</em>line的函数,并没有对这个函数进行过效率测试。由于每次都只<em>读取</em>一个字符,然后判断是否是换行符和指针指向的<em>数据</em>空间是否为满,不像直接<em>读取</em>缓冲区,然后在判断的方式,可能我<em>使用</em>的方式速率会慢一些。以后有机会的时候进行下验证。 以下是代码,没有附加注释。#include #include #incl
使用socket读取服务器发送的数据问题
刚刚项目<em>使用</em>到<em>socket</em>进行<em>数据</em>的传送,其中<em>数据</em>的<em>读取</em>问题着实 费了老大的劲,以此分享希望能让有缘人少走弯路。new Th<em>read</em>() { @Override public void run() { try { mSocket = new Socket(SERVICEADD,
linux下诡异的串口read问题,数据不全
类似的问题以前有过 :http://topic.csdn.net/u/20070801/19/bd9a2829-3c24-42af-8ac6-0e6a78218fba.htmlrnrn如果串口buffer为8字节,我的电脑上试下来就是8字节,我构造了<em>数据</em>,在发送机里发送:rn123456789012rnrn有时候能一次受到123456789012,有时候只能受到12345678,第二次受到余下的数,我很好奇,如果buffer就是8位,为什么有时候能收全,有时候不能???rn[code=C/C++]rn while( 1 ) rn rn n<em>read</em> = <em>read</em>( ser_fd, buffer, sizeof(buffer)); rn while(n<em>read</em> >0)//表示收到<em>数据</em>了rn 。。。。。。。。。。。。 处理中 rn rn[/code]
关于socketread函数
深入理解计算机原理上有个健壮的<em>read</em>函数如下:rn[img=https://img-bbs.csdn.net/upload/201903/07/1551924995_643411.jpg][/img]rnrn看书上说网络编程中可以用这个函数。我用这个函数接受<em>数据</em>的时候,如果对端发送的<em>数据</em>比较少,而我这边的buf size太大的话,<em>读取</em>一次之后会阻塞在<em>read</em>上,显然是有问题的,这个函数应该如何<em>使用</em>呢?
JAVA Socket的read问题
看了一本书的教程 JAVA做服务端rnint d_length=100;rnbyte[] data=new byte[d_length];rn...........rnin=<em>socket</em>.getInputStream();rnd_length=in.<em>read</em>(data)rnrn然后客户端我用AS写的 用的Socket 然后用了writeObject 向JAVA服务端发送了一个OBJECT [color=#FF0000]请问JAVA端如何读出这个object[/color] (此object 在as中: var o:Object=new Object()rn o.msg="hello world"
socket read返回问题
假设<em>read</em>一个<em>socket</em>,参数为100,<em>read</em>(<em>socket</em>fd, buf, 100),对方假设发送了80字节<em>数据</em>,但是现在<em>socket</em>接收缓冲区里只收到了20字节<em>数据</em>,问这个时候,<em>read</em>是否会返回20字节呢,还是继续阻塞等到剩余的60字节?
socketread最佳方法
while ((bytesRead = inputStream.<em>read</em>(result, total - remaining, remaining)) != -1 &amp;&amp; remaining &gt; 0) { remaining -= bytesRead;
socketread函数
请问该函数具体在什么时候返回,在tcp/ip原理中,他是这么讲的,tcp是面向连接的可靠的协议,是面向字节流的,无边界记录保持的,而且书上也说当用write函数发送100个字节的<em>数据</em>,那么有可能在收端可能要好几次才能首完,那么请问<em>read</em>是什么时候返回的,系统会在什么时候通知<em>read</em>读并且返回,??
关于socketread问题
最近在<em>linux</em>下用<em>socket</em>,客户端不停write,为何服务器端<em>read</em>一直没有反应,需要把客户端关掉一会后服务器端才能<em>read</em>出<em>数据</em>,是因为服务器端<em>read</em>阻塞了么?是不是需要客户端把<em>socket</em> close后,服务器端才能<em>read</em>出东西?那这样的话,怎样才能让客户端不关闭<em>socket</em>就能让服务器端不断的<em>read</em>出<em>数据</em>呢?多谢解答
socket read()方法
我的客户端是rnrnPrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(<em>socket</em>1.getOutputStream())),true);rn rnout.print("datafrom client:gggggg=");rnout.flush();rnrn我的服务端是rnBufferedReader in=new BufferedReader(new InputStreamReader(<em>socket</em>1.getInputStream()));rnchar[] buff = new char[10];rn int iLen = in.<em>read</em>(buff);rn rn while(iLen>0) rn rn if (in.toString().trim().equals("hello"))rn rn System.out.println("Echoing: " + in.toString());rn rn break;rn rnrn iLen = in.<em>read</em>(buff);rn rnrnrn straa = new String(buff,0,iLen);rn请问怎么服务端接收不到值 不明白
socket read错误
在读<em>socket</em>的时候,提示 rnerrno = 11 rnResource temporarily unavailable. rn请问是哪有问题rn
socket read 问题
服务器与客户端建立连接后,调用<em>read</em>函数读<em>数据</em>,可否指定读到'/0'时停止?因为我是服务器,要收命令,如果命令发多了,服务器一下全收过来了,还要解析,比较麻烦,我想一次只收一条命令可以吗?
windows下vc使用read函数和Linux下read函数读取文件内容的比较,请帮我分析比较下代码
VC下rn#includern#includernint main()rn int fd;rn char *buffer;rn long count;rn fd = open("C:/\ss.txt",O_RDWR|O_CREAT);rn count = filelength(fd);rn printf("count=%ld\n",count);rn buffer = malloc(100);rn <em>read</em>(fd,buffer,100);rn //buffer = malloc(count+1);//注1rn //<em>read</em>(fd,buffer,count+1);//注2rn printf("%s\n",buffer);rn /*while(*buffer!=NULL)rn buffer++;rn count1++;rn rn printf("%d\n",count1);*/ //注3rnrnrnLinux下rn#include rn#includern#include rn#includern#include rnlong filesize(char *filename)rnrnrnrnstruct stat stmp;rnrnif (stat(filename, &stmp) < 0)rnrnreturn -1;rnrnreturn stmp.st_size;rnrn rnint main()rn int fd;rn char *buffer;rn long count;rn count = filesize("/root/ss.txt");rn printf("count=%ld\n",count);rn buffer = malloc(100);rn fd = open("/root/ss.txt",O_RDWR|O_CREAT);rn <em>read</em>(fd,buffer,100);rn printf("%s",buffer);rnrn在VC下如果给缓冲buffer加了100字节大小,会打出很多乱码,那么如果把buffer改成加了文件长度的大小(即改为注1注2),后面任然出现乱码,注3打印出来的长度也不对啊!!
Linux下read和write函数
rnrnssize_t r_<em>read</em>(int fd, void* buf, size_t size)rnrn ssize_t retval;rnrn while (retva = <em>read</em>(fd, buf, size), retva == -1 && errno == ETNTR) ;rn return retval;rnrnrnssize_t r_write(int fd, void *buf, size_t size)rnrn char *bufp;rn size_t bytestowrite;rn size_t byteswritten;rn size_t totalbytes;rnrn for (bufp = buf, bytestowirte = size, totalbytes = 0; bytestowrite > 0; bufp+=byteswritten, bytestowrite-=byteswritten)rn rn byteswriteen = write(fd, bufp, bytestowrite);rn if (byteswritten == -1 && (errno != EINTR))rn return -1;rn if (byteswritten == -1)rn byteswritten = 0;rn totalbytes += byteswritten;rn rnrnrn针对以上代码有几点不明白,write函数被信号打断后,返回-1,置错误码errno=ENITR, 没有<em>数据</em>传输,按照这段代码的意思,write被信号打断后bytewritten = 0;在循环的过程中,totalbytes只可能取两个值 size或者0?rn为什么r_<em>read</em>那么简单,而r_write的实现相对复杂?
read()读取键盘数据计算字节的问题
public class CharDecode rnrnpublic static void main(String[] args) throws Exception rn System.out.println("please enter a chinese word:"); rn int ch = 0; rn while(true) rn rnrn ch = System.in.<em>read</em>(); rn System.out.println(ch);rn System.out.println("从这儿"+Integer.toHexString(ch)+"到这儿"); rn break;rn rn rnrn这个<em>读取</em>键盘的输入的<em>数据</em>,我直接按的enter键换行,ch输出的是13,换行是/n/r两个字节,怎么<em>读取</em>的是rn13个字节??
linux下,read函数的问题?
源代码:rn#include rn#include rn#include rn#include rn#include rnint main()rnrn int fd1;rn char buffer[100];rn int num,i;rn if(fd1=open("test1.dat",O_RDONLY)==-1)rn perror("Cannot open the test1 file");rn return 1;rn rn while((num=<em>read</em>(fd1,&buffer,10))>0)rn printf("%s",buffer);rn rn close(fd1);rn return 0;rnrn编译的时候没有错误,执行的时候就不动了!rnrn调试的时候出现错误信息:missing separate debuginfos use debuginfo-install glibc.i686!rn望大虾帮助阿!谢谢了!
linuxread返回的问题
<em>read</em>调用在正常情况下,返回<em>读取</em>到的字节数,在错误的情况下返回-1,并设置全局的errno。rn 但是在<em>read</em>调用的过程中如果有信号使得调用中断,除了设置errno==EINTR外,返回值是多少呢??rn 我得到的返回值是65535呢?<em>read</em>是被SIGALRM中断的。
Linux下怎么使用write read 操作外设
我有一个U盘设备,通过write文件函数往里写入命令,然后由u盘设备修改这个文件,再由上位机<em>read</em>文件函数指令读回。rn但是我试验的情况是,读回来的是我写进去的命令,查看总线貌似没有出现读指令,好像直接从系统中的缓存读回了以前写的内容,好像系统中有缓存一样。但是我搜的的fopen fwrite 和f<em>read</em>才这样呀。求高手赐教。
linux下设置socket的connect超时时间
有两个办法可以设置 1. 比较通用的办法,设置套接字为非阻塞状态,并在非阻塞模式下调用connect函数,然后调用select函数,设置超时<em>时间</em>。 2. Linux下connect<em>使用</em>了send函数的超时<em>时间</em>,可以通过下面的代码设置connect的超时<em>时间</em>为1秒:struct timeval timeout={1,0}; setsockopt(fd,SOL_SOCKET,SO_SND
如何读取socket服务器的数据
我目前在做一个车辆监控系统,先单独做了一个<em>socket</em>的服务器,能实现从网口<em>读取</em><em>数据</em>(<em>数据</em>多是含有地理信息),还建立了一个SQL的<em>数据</em>库,目的是保存那些网口<em>读取</em>的<em>数据</em>,问题:rn1、无设定的情况下,这些<em>socket</em>服务器读到的<em>数据</em>被自动存在哪里了?rn2、我做了一个电子地图,为了实时显示车辆运行,是从这个<em>socket</em>服务器<em>读取</em><em>数据</em>?还是在<em>数据</em>保存到SQL server<em>数据</em>库后,再从这个<em>数据</em>库<em>读取</em><em>数据</em>?rn3、若是直接从<em>socket</em>服务器<em>读取</em>服务器的<em>数据</em>,该怎么做?rn请尽量说详细点,谢谢!
Socket连续读取两次数据
实现功能:客户端上传一张图片交给服务端后再次上传一句话告诉服务端已经上传完毕; 服务端代码: package com.fpy.<em>socket</em>; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.F...
Linux下使用socket的accpt函数
#include &amp;lt;sys/<em>socket</em>&amp;gt; int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 这个函数是从完成三次握手队列中取得一个已完成的链接,但是这样会存在一个隐患,因为可能在连接处于就绪队列里面的时候,连接已经中断了,你此时accept到的很可能就是一个已经关闭的客户端连接。 也就是说acc...
linux下编程读取windows数据
<em>linux</em>下编程<em>读取</em>windows下<em>数据</em>要怎么做啊?
Linux下读取USB扫描枪数据
1.USB扫描枪   USB接口的扫描枪相当于键盘输入,在Windows或者Linux下,在成功安装驱动的前提下,打开文件编辑器如word、txt等。扫描枪读出到条码<em>数据</em>时,<em>数据</em>即被捕获到光标处。 2.Linux下<em>读取</em><em>数据</em> 2.1扫描枪设备   USB扫描枪相当于一个键盘输入设备,Windows或者Linux下都集成相关驱动,或者免驱动。基于ARM下的Linux系统,接入扫描枪,在“/de
DevExpress读取时间数据的问题
[img=https://img-bbs.csdn.net/upload/201404/16/1397637157_202529.png][/img]rn图上圈出来的是我获取到的X轴坐标值,但实际上,我datatable中的对应<em>数据</em>是没有前面的日期的(这个日期总是当天)。rn其中一条线的代码rn[code=csharp]rn for (int i = 0; i < Gps.Rows.Count; i++)rn rn DateTime dt = Convert.ToDateTime(Gps.Rows[i]["media time"]);rn TimeSpan DT = dt.TimeOfDay;rn //string DT = Dt.ToString();rn point = new SeriesPoint(DT, Convert.ToDouble(Gps.Rows[i]["elevation [m]"].ToString()));rn Series1.Points.Add(point);rn rn this.chartControl1.Series.Add(Series1);rnrn ((PointSeriesView)(Series1.View)).PointMarkerOptions.Size= 1;rn[/code]rn明明我的<em>数据</em>都没有这个日期,但Dev总自己加日期,希望X轴的值就是我的<em>数据</em>值(不带日期的)
使用while和read读取文件内容到shell脚本
最近公司搭了一个ftp,对一些目录做了权限,为了高效,所以写了这么一个脚本。 可以看到,上面那个脚本只能创建单个用户,但是现在需要创建多个ftp用户,为了避免一个一个手动创建,想做一个批量的脚本,现在手上有一个txt文件,内容大概是这样: 用while循环从文件中<em>读取</em><em>数据</em>: #!/bin/bash while <em>read</em> lin
关于read()读取的方法
请问<em>read</em>()不是<em>读取</em>下一个字节吗 ,它的返回值是int类型的,那为什么在system.out.print(b);可以输出<em>读取</em>的字节,rn这一点心我定义了int b=input.<em>read</em>()把的返回值给b了;
read读取错误
System.InvalidOperationException: 阅读器关闭时 Read 的尝试无效,请教高手。rnrn报错部分:while(dr.Read())rnrn部分代码如下:rnrnrn private void Page_Load(object sender, System.EventArgs e)rn rn // 在此处放置用户代码以初始化页面rn if(!IsPostBack)rn rn System.Data.SqlClient.SqlDataReader dr;rn this.sqlConnection1.Open();rn dr = this.cmdGetAll.ExecuteReader();rn bool firstrow=true;rn while(dr.Read())rn rn ddlID.Items.Add(new ListItem(dr[0].ToString()));rn if(firstrow)rn rn txtName.Text=(string)dr["FirstName"];rn txtAddress.Text=(string)dr["LastName"];rn firstrow=false;rnrn rn dr.Close();rn this.sqlConnection1.Close();rn rn rn
Linux:read读取控制台输入
命令:<em>read</em> -t 10 -p "输入一个数字" num 一、基本语法 <em>read</em>(选项)(参数) 选项: -p:指定<em>读取</em>值时的提示符; -t:指定<em>读取</em>值时等待的<em>时间</em>(秒),如果没有在指定的<em>时间</em>内输入,就不再等待了。。 参数 变量:指定<em>读取</em>值的变量名 应用实例 案例1:<em>读取</em>控制台输入一个num值 案例2:<em>读取</em>控制台输入一个num值,在10秒内输入。 ...
read 读取丢失
一个网络+串口程序。rnrn <em>read</em>()时,有时会<em>读取</em>不到来自串口的<em>数据</em>。rn 从网络收到命令后发给串口,此时串口会返回一些字符串,<em>read</em>()在一个线程里面,一直在跑,但是现在在ARM上,发两次才能收到一次的回复。采用的是非阻塞模式,因为是多线程程序。rn 奇怪的是相同的程序在PC上可以正常运行。 rn 这是什么原因?内核?编译器版本?应用程序本身?还是CPU的频率问题?
使用 Socket 抓取数据
要在客户端操作 Socket ,可<em>使用</em> fsockopen、<em>socket</em>_create、stream_<em>socket</em>_client 等函数实现。如果是PHP 5,建议<em>使用</em> stream_<em>socket</em>。   fsockopen 实现长连接。Client 方与 Server 方先建立通信连接,连接建立后不断开,然后再进行报文发送和接收。   <em>使用</em> Socket 获取<em>数据</em>的实现,GET 方法。 ...
如何每隔一段较长时间就去取数据一次了?
比如说每隔5分钟去<em>数据</em>库取一次<em>数据</em>。定时器一次只能定时65535ms,如何才能解决这个问题了?
linux下SQlite3数据使用
sqlite3存取数组时可以定义类型为 text SQLite<em>数据</em>库特点: 1.零配置,无需安装和管理配置; 2.储存在单一磁盘文件中的一个完整的<em>数据</em>库; 3.<em>数据</em>库文件可以在不同字节顺序的机器间自由共享; 4.支持<em>数据</em>库大小至2TB; 5.足够小,全部源代码大致3万行c代码,250KB; 6.比以前流行的大多数<em>数据</em>库对<em>数据</em>的操作要快; <em>数据</em>库操作: int sqlite3...
Linux下使用python读取共享内存
python没有独立的库可以<em>读取</em><em>linux</em>下的共享内存,下面<em>使用</em>ctypes调用系统的API<em>读取</em>共享内存的内容 <em>使用</em>C++创建共享内存 #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;iostream&amp;gt; #include &amp;lt;unistd.h&amp;gt; #include &amp;lt;sys/ipc.h&amp;gt; #include &amp;lt;sys/s...
调用read函数读取socket流时,为何返回值总是1
最近在Linux下面用Socket写一个httpclient,主要代码如下:rn int sockfd = createtcp<em>socket</em>(AF_INET);rn struct sockaddr addr;rn createsockaddr(ip, 80, &addr); //帮定到目标机器80端口rn int status = connect(sockfd, &addr, sizeof(addr)); //连接rn if(status == 0)rn rn cout << "Connect to " << hoststr << "(" << ipstr << ")\n" << request << endl;rn int n =write(sockfd, request.c_str(), request.length());rn assert(n == request.length());rn char buffer[1024];rn n = 0;rn string message;rn while(n = <em>read</em>(sockfd, buffer, 1023) > 0)rn rn //buffer[n] = '\0';rn cout << n << endl; //在调试的时候,这里n总是1,但是实际buffer中的<em>数据</em>却已经读满了,不知道为何?rn message.append(buffer, 1023);rn rnrn 在实际运行过程中,发现是能够成功获取服务器断返回的httpresponse信息,但是<em>read</em>函数每次均返回1,可是实际每次成功<em>读取</em>字符数并不是1,rn请大侠赐教rnrn谢谢
Read的使用
本课程通过8天<em>时间</em>从基础开始学习GO语言,精细化讲解GO语言的知识,并<em>使用</em>实例贯通了知识的<em>使用</em>
socket read和write的内容不一致
我写了一个服务器/客户端程序,用<em>read</em>和write发送<em>数据</em>。但是客户端发送的内容达到服务器端时出现了错误,服务器读到的内容与客户端发送的内容不一致,代码及运行结果如下:rnrn客户端:rn int temp=0;rn printf("第 1 次 write: command==%d\n",temp);rn write(server_<em>socket</em>, &temp, sizeof(int));rnrn temp=TELL_SERVER_TO_START_EVENT_CHANNEL;rn printf("第 2 次 write: sub-command==TELL_SERVER_TO_START_EVENT_CHANNEL %d\n", temp);rn write(server_<em>socket</em>, &temp, sizeof(int));rn运行结果是:rn 第 1 次 write: command==0rn 第 2 次 write: sub-command==TELL_SERVER_TO_START_EVENT_CHANNEL 47rnrn服务端:rn <em>read</em>(new_<em>socket</em>, &command, sizeof(int));rn printf("command is %x pid=%d \n",command,getpid());rn运行结果是:rn command is 8aa pid=7540 rn rn 客户端发送的0但是服务器端收到的是8aa,为什么会这样?关键是,在这些代码之前,我也用过<em>read</em>和write函数,跟这里的模式一模一样,并没有出错,这里为什么会出错呢,哪位高手帮帮我!急啊,不甚感激!rn 补充,重启电脑没用。
android socket read阻塞问题
我的目的是android仿真器(client)发送消息给服务器,服务器收到信息后再将收到的消息的内容 发回clientrn但是服务器必须要执行<em>socket</em>.shutdownOutput();才可以<em>read</em>,否则就一直<em>read</em>阻塞.rnserver code:rn[code=java]rnrn//package com.android.net;rnrnimport java.io.IOException;rnimport java.net.ServerSocket;rnimport java.net.Socket;rnimport java.util.ArrayList;rnimport java.util.List;rnrnimport java.io.BufferedReader;rnimport java.io.BufferedWriter;rnimport java.io.InputStream;rnimport java.io.InputStreamReader;rnimport java.io.OutputStream;rnimport java.io.OutputStreamWriter;rnimport java.io.PrintWriter;rnrnrnpublic class java_server rnrnrn public static void main(String[] args) throws IOException rn ServerSocket serivce = new ServerSocket(30000);rn while (true) rn //等待客户端连接rn Socket <em>socket</em> = serivce.accept();rn new Th<em>read</em>(new AndroidRunable(<em>socket</em>)).start();rn rn rnrnrnrnrnrnrnrnrnrn class AndroidRunable implements Runnable rnrn Socket <em>socket</em> = null;rnrn public AndroidRunable(Socket <em>socket</em>) rn this.<em>socket</em> = <em>socket</em>;rn rnrn @Overridern public void run() rn // 向android客户端输出hello worildrn String line = null;rn InputStream input;rn OutputStream output;rn String str = "hello world!";rn try rn //向客户端发送信息rn output = <em>socket</em>.getOutputStream();rn input = <em>socket</em>.getInputStream();rn BufferedReader bff = new BufferedReader(rn new InputStreamReader(input));rn output.write(str.getBytes("gbk"));rn output.flush();rn //半关闭<em>socket</em> rn <em>socket</em>.shutdownOutput();rn //获取客户端的信息rn while ((line = bff.<em>read</em>Line()) != null) rn System.out.print(line);rn rn //关闭输入输出流rn output.close();rn bff.close();rn input.close();rn <em>socket</em>.close();rnrn catch (IOException e) rn e.printStackTrace();rn rnrn rnrnrnrn[/code]rnrnrnrnclient code:rn[code=perl]rnpackage com.example.android_client;rnimport java.io.BufferedReader;rnimport java.io.IOException;rnimport java.io.InputStreamReader;rnimport java.io.OutputStream;rnimport java.net.InetSocketAddress;rnimport java.net.Socket;rnimport java.net.SocketTimeoutException;rnrnimport android.app.Activity;rnimport android.os.Bundle;rnimport android.os.Handler;rnimport android.os.Message;rnimport android.view.Menu;rnimport android.view.View;rnimport android.view.View.OnClickListener;rnimport android.widget.Button;rnimport android.widget.EditText;rnimport android.widget.TextView;rnrnpublic class MainActivity extends Activity rn Socket <em>socket</em> = null;rn String buffer = "";rn TextView txt1;rn Button send;rn EditText ed1;rn String geted1;rn public Handler myHandler = new Handler() rn @Overridern public void handleMessage(Message msg) rn if (msg.what == 0x11) rn Bundle bundle = msg.getData();rn txt1.append("server:"+bundle.getString("msg")+"\n");rn rn rnrn ;rnrn @Overridern protected void onCreate(Bundle savedInstanceState) rn super.onCreate(savedInstanceState);rn setContentView(R.layout.activity_main);rn txt1 = (TextView) findViewById(R.id.txt1);rn send = (Button) findViewById(R.id.send);rn ed1 = (EditText) findViewById(R.id.ed1);rn send.setOnClickListener(new OnClickListener() rnrn @Overridern public void onClick(View v) rn geted1 = ed1.getText().toString();rn txt1.append("client:"+geted1+"\n");rn //启动线程 向服务器发送和接收信息rn new MyTh<em>read</em>(geted1).start();rn rn );rnrn rnrn class MyTh<em>read</em> extends Th<em>read</em> rnrn public String txt1;rnrn public MyTh<em>read</em>(String str) rn txt1 = str;rn rnrn @Overridern public void run() rn //定义消息rn Message msg = new Message();rn msg.what = 0x11;rn Bundle bundle = new Bundle();rn bundle.clear();rn try rn //连接服务器 并设置连接超时为5秒rn <em>socket</em> = new Socket();rn <em>socket</em>.connect(new InetSocketAddress("192.168.1.3", 30000), 5000);rn //获取输入输出流rn OutputStream ou = <em>socket</em>.getOutputStream();rn BufferedReader bff = new BufferedReader(new InputStreamReader(rn <em>socket</em>.getInputStream()));rn //<em>读取</em>发来服务器信息rn String line = null;rn buffer="";rn while ((line = bff.<em>read</em>Line()) != null) rn buffer = line + buffer;rn rn rn //向服务器发送信息rn ou.write("android 客户端".getBytes("gbk"));rn ou.flush();rn bundle.putString("msg", buffer.toString());rn msg.setData(bundle);rn //发送消息 修改UI线程中的组件rn myHandler.sendMessage(msg);rn //关闭各种输入输出流rn bff.close();rn ou.close();rn <em>socket</em>.close();rn catch (SocketTimeoutException aa) rn //连接超时 在UI界面显示消息rn bundle.putString("msg", "服务器连接失败!请检查网络是否打开");rn msg.setData(bundle);rn //发送消息 修改UI线程中的组件rn myHandler.sendMessage(msg);rn catch (IOException e) rn e.printStackTrace();rn rn rn rnrn @Overridern public boolean onCreateOptionsMenu(Menu menu) rn // Inflate the menu; this adds items to the action bar if it is present.rn getMenuInflater().inflate(R.menu.main, menu);rn return true;rn rnrnrn[/code]rnrnlayout:rn[code=php]rnrnrn rn rn rn rn rnrnrnrnrn[/code]rnrnrnmanifest:rnrn[code=php]rnrnrnrn rnrn rn rn rn rnrn rn rn rn rn rnrnrn[/code]
JAVA socket 中的read方法
我最近写一个JAVA通信程序,为什么我才服务器端发送一次的消息,到客户端 会分多次把这个消息读出来? 请大家给我讲讲<em>read</em>()方法的机制,它一次读多少<em>数据</em>是什么决定的? 急,谢谢了。
strcat & socket read效率问题
char *gethtmlbyurl(const char *url,int port,char *cookies )rnrn char strurl[512] = "";rn strcpy( strurl,url );rn char page[512]="";rn char domain[512]="";rn char host[512]="";rn char *tmp = 0;rnrn if( strchr(strurl,'/') )rn strcpy( page,strchr( strurl,'/' ) );rn elsern page[0]='/';rnrn strcpy(domain, strtok( strurl,"/") );rnrn struct hostent *h=gethostbyname( domain );rn strcpy(host,inet_ntoa( *((struct in_addr*)h->h_addr)));rnrn char heads[1024]="";rn strcat( heads,"GET " );rn strcat( heads,page );rn strcat( heads," HTTP/1.1\r\n" );rn strcat( heads,"HOST: " );rn strcat( heads,domain );rn strcat( heads,"\r\nConnection:Close\r\n\r\n" );rnrn printf( "%s\n-----------------------------\n",heads );rn int sockfd;rn int len;rn struct sockaddr_in address;rn int result;rn sockfd = <em>socket</em>(AF_INET, SOCK_STREAM, 0);rn address.sin_family = AF_INET;rn address.sin_addr.s_addr = inet_addr(host);rn address.sin_port = htons(port);rn len = sizeof(address);rn result = connect(sockfd, (struct sockaddr *)&address, len);rn if(result == -1)rn perror("oops: client1");rn return "oops:connect";rn rn char htmlcode[1024*1024*10]="";rn char cs[10] ="";rn write(sockfd,heads,strlen(heads));rn while( <em>read</em>( sockfd, cs,10 )==10 )//,strtmp );rn gethtmlbyurl( strtmp,80,strheads );rn rnrnrn return 1;rnrn
linux socket read函数返回值问题
我用select来判定有<em>数据</em>的fd,并用my_<em>read</em>这个函数来<em>读取</em>fd上的<em>数据</em>。可是发现有时候<em>read</em>的返回值是0,还且持续很多次循环。我想问,这是为什么啊?rnint my_<em>read</em>(int fd, void *buf, size_t c)rnrn int i=0;rn int sum=0;rn int <em>read</em>Count=0;rn while(sum2000)rn rn exit(0);rn rn printf("sum= %d\n",sum);rn buf +=i;rn i=<em>read</em>(fd,buf,c-sum);rn if(i,sum);rn return sum;rn //return c;rn
socket连接中READ问题
为什么我的SOCKET连接中,我用READ读服务端的<em>数据</em>rn总是需要READ两次才读完呀rnrn sockfd=<em>socket</em>(AF_INET,SOCK_STREAM,0);rn if(sockfd,result);rn close(sockfd);rnrn
Socket getInputStream().read() 返回-1
如题:rnrn 首先TCP通握手建立了连接。rnrn[code=Java]rnbyte[] buf = new byte[1024];rnInputStream in = <em>socket</em>.getInputStream();//<em>socket</em> 是已经建立好了的一个Socket连接rnint c = in.<em>read</em>(buf);rnrn[/code]rnrn在运行中 有时会出现c为-1。rnrn查看API:rnrn[color=#FF0000]如果 b 为 null,将抛出 NullPointerException。如果 b 的长度为 0,则无字节可读且返回 0;否则,要尝试<em>读取</em>至少一个字节。如果因为流位于文件末尾而没有可用的字节,则返回值 -1;否则,至少可以<em>读取</em>一个字节并将其存储在 b 中。[/color]rnrn上面说明:因为流位于文件末尾而没有可用的字节。 rnrnrn不明白的地方: 在网络Socket<em>使用</em>上会出现流位于文件末尾? in.<em>read</em>(buf)方法是阻塞的,如果没有<em>数据</em>过来的话。应该会一直等待。 rnrn高手帮忙分析下 在什么情况下出现返回-1。rnrn
android Socket 关于read的问题
在非堵塞的模式下,服务器发过来一个比较大的<em>数据</em>,在<em>read</em>的时候,有时<em>数据</em>还没结束,<em>read</em>返回了0,有时<em>数据</em>已经结束了<em>read</em>还是返回0 ,这是怎么回事啊,代码如下:rnpackage com.service;rnrnimport java.io.File;rnimport java.io.FileOutputStream;rnimport java.io.OutputStreamWriter;rnimport java.net.InetSocketAddress;rnimport java.net.SocketException;rnimport java.net.SocketTimeoutException;rnimport java.nio.ByteBuffer;rnimport java.nio.channels.SelectionKey;rnimport java.nio.channels.Selector;rnimport java.nio.channels.SocketChannel;rnimport java.util.Iterator;rnrnimport com.data.ServiceDataInfo;rnimport com.data.publicInfo;rnrnimport android.os.Handler;rnimport android.util.Log;rnrnrnpublic class ServiceLisTh<em>read</em> extends Th<em>read</em> rnrn static final int SOCKET_WAIT = 0, STREAM_SOCKET_CONNECT = 1,rn STREAM_SOCKET_SEND = 2, STREAM_SOCKET_RECEIVE = 3;rn static int SIZE = 10;rnrn static String mhost = null;rn static int mPort = 0;rn static int mhandle = 0;rn static int current_state = SOCKET_WAIT;rn static ByteBuffer send_byte = null;rn static int send_buflen = 0;rn public static Handler childHandler;rnrn public void SetConnect(int handle) rn current_state = STREAM_SOCKET_CONNECT;rn mhandle = handle;rn rn rn SocketChannel sChannel = null;rn public void run() rn try rn //long start = System.currentTimeMillis(); // 打开Socket通道rn sChannel= SocketChannel.open();rn rn Selector selector = null ;rn ByteBuffer recvbuffer = ByteBuffer.allocateDirect(10*1024);rn byte[] buff = new byte[10*1024]; rn InetSocketAddress ip = new InetSocketAddress(rn publicInfo.IP,publicInfo.PORT);rn Log.v("ydLog","TcpSocket run");rn if(selector == null)rn rn selector = Selector.open();rn rn // 注册连接服务端<em>socket</em>动作 rn sChannel.configureBlocking(false);rn sChannel.connect(ip);rn //要设置连接超时 rn //sChannel.<em>socket</em>().connect(ip,5 * 1000); rn //设置读超时 rn //sChannel.<em>socket</em>().setSoTimeout(5 * 100); rnrn //sChannel.<em>socket</em>().setSoTimeout(5 * 1000);rn sChannel.register(selector, SelectionKey.OP_CONNECT);rn Log.v("ydLog", "准备连接"); // 连接rn //int total = 0;rnrn _FOR: for (;;) rn // rn selector.select();rn Iterator iter = selector.selectedKeys().iterator();rn rn while (iter.hasNext()) rn rn SelectionKey key = (SelectionKey) iter.next();rn Log.v("ydLog", "已连接"); // 连接rn iter.remove();rn rn if (key.isConnectable()) rn rn rn SocketChannel channel = (SocketChannel) key.channel();rn rn if (channel.isConnectionPending()) rn rn channel.finishConnect();rn rnrn channel.register(selector, SelectionKey.OP_READ);rn rn else if(key.isWritable())rn rn SocketChannel channel = (SocketChannel) key.channel();rn if(send_byte != null)rn rn rn int len = channel.write(send_byte);rn rn send_byte.clear();rn rn channel.register(selector, SelectionKey.OP_READ);rn rn else if (key.isReadable()) rn rn SocketChannel channel = (SocketChannel) key.channel();rn recvbuffer.clear();rn StringBuffer TEMPVALUE = new StringBuffer(10*1024);rn int count = 0;rn rn for (;;)rn rn recvbuffer.clear();rn rn count = channel.<em>read</em>(recvbuffer);rn rn recvbuffer.limit( 10*1024);rn recvbuffer.position( 0 );rnrn rn if (count > 0) rn //recvbuffer.flip(); rn rn recvbuffer.get(buff, 0, count); rn String tempBuf = new String(buff, 0, count, "UTF-8");rn TEMPVALUE.append(tempBuf); rn Log.v("ydLog", "TEMPVALUE : " + TEMPVALUE);rn Log.v("ydLog", "TEMPVALUE : " + TEMPVALUE.length());rn key.interestOps(SelectionKey.OP_READ);rn rn rn rn else if(count == -1) rn rn File path = new File(publicInfo.sdcardUrl + "aa");rn File f= new File(publicInfo.sdcardUrl + "aa" + "bb.txt");rn if(!path.exists())rn rn path.mkdirs();rn rn if(!f.exists())rn rn f.createNewFile();rn rn elsern rn rn f.delete();rn f.createNewFile();rn rn OutputStreamWriter osw = new OutputStreamWriter(rn new FileOutputStream(f));rn osw.write(TEMPVALUE.toString());rn osw.close();rn rn ServiceDataInfo dataInfo = new ServiceDataInfo();rn // dataInfo.resolveServiceData( TEMPVALUE );rn //sChannel.close();rn key.interestOps(SelectionKey.OP_READ);rn selector.selectedKeys().remove(key);rn break;//; _FOR;rn rn rn rn rn rn Th<em>read</em>.sleep(300);rn rn rn rn catch(SocketTimeoutException e )rn rn Log.e("ydLog", "connection timed out");rn //run();rn sChannel.notify();rn rn rn catch(SocketException e)rn rn Log.e("ydLog", e.toString());rn //run();rn rn catch (Exception e) rn rn e.printStackTrace();rn //run();rn rn rn rnrnrn
socket的Read timed out问题
[code=Java]rnprivate static String sendSynMsg(String ipAddr, byte[] datas) throws Exception rn //解析服务器地址和端口号 rn int dotPos = ipAddr.indexOf(':'); rn String ip = ipAddr.substring(0, dotPos).trim(); rn int port = Integer.parseInt(ipAddr.substring(dotPos+1).trim()); rn InetSocketAddress endpoint = new InetSocketAddress(ip , port); rn System.out.println("ip:"+ip+"port:"+port);rn Socket <em>socket</em> = null; rn OutputStream out = null; rn InputStream in = null; rn try rn <em>socket</em> = new Socket(); rn //设置发送逗留<em>时间</em>2秒 rn <em>socket</em>.setSoLinger(true, 2); rn //设置InputStream上调用 <em>read</em>()阻塞超时<em>时间</em>2秒 rn <em>socket</em>.setSoTimeout(2000); rn //设置<em>socket</em>发包缓冲为32k; rn <em>socket</em>.setSendBufferSize(32*1024); rn //设置<em>socket</em>底层接收缓冲为32k rn <em>socket</em>.setReceiveBufferSize(32*1024); rn //关闭Nagle算法.立即发包 rn <em>socket</em>.setTcpNoDelay(true); rn //连接服务器 rn <em>socket</em>.connect(endpoint); rn //获取输出输入流 rn out = <em>socket</em>.getOutputStream(); rn in = <em>socket</em>.getInputStream(); rn //输出请求 rn out.write(datas); rn out.flush(); rn //接收应答 rn BufferedReader br = new BufferedReader( new InputStreamReader(in) , 4096); rn StringWriter received = new StringWriter(4096); rn char[] charBuf = new char[4096]; rn int size = 0; rn char lastChar = 0; rn do rn size = br.<em>read</em>(charBuf , 0 , 4096); rn lastChar = charBuf[size-1]; rn if(lastChar == 0) rn received.write(charBuf, 0, size - 1); rn rn //System.out.println(received.toString()); rn while(lastChar != 0); rn rn return received.toString(); rn rn finally rn if (out != null) rn try rn out.close(); rn catch(Exception ex) rn ex.printStackTrace(); rn rn rn if (in != null) rn try rn in.close(); rn catch(Exception ex) rn ex.printStackTrace(); rn rn rn if (<em>socket</em> != null) rn try rn <em>socket</em>.close(); rn catch(Exception ex) rn ex.printStackTrace(); rn rn rn rn rnrnpublic static void main(String[] args) rn byte[] charBuf = new byte[4096]; rnrn try rn sendSynMsg("132.97.101.22:7001",charBuf);rn catch (Exception e) rn // TODO Auto-generated catch blockrn e.printStackTrace();rn rnrnrn rn[/code]rn请问下,传参数 sendSynMsg("132.97.10.55:7001",charBuf);第二个参数该怎么传呢??rn
Linux下的时间
时钟 硬件时钟RTC(real time clock),记录wall clock time,硬件对应到/dev/rtc设备文件,<em>读取</em>设备文件可得到硬件<em>时间</em> <em>读取</em>方式 通过ioctl #include int ioctl(fd, RTC_request, param); hwclock命令 通常内核在boot以及从低电量中恢复时,会<em>读取</em>RTC更新system ti
关于linuxread和write函数
以下说明指在网络编程中,即Socket <em>linux</em>下<em>read</em>函数 当缓冲区没有<em>数据</em>可读时,<em>read</em>会阻塞 当要读的字节数小于缓冲区<em>数据</em>的字节数时,则将要读的字节数的内容读出来 当要读的字节数大于等于缓冲区,则将缓冲区的内容全部读出来 此缓冲区是指套接字缓冲区,并不是<em>read</em>函数里面的buf,下同   <em>linux</em>下write函数 当写入的<em>数据</em>大于缓冲区的大小时,即缓冲区已没有足够空间...
linux下的read函数出错了
[code=C/C++]rn#includern#includern#includernint pid1,pid2;rnint i;rnint s=0;rnint *p,*q;rnmain()rn int fd1[2],fd2[2],fd3[2];rn int outpipe[50],inpipe[50];rn pipe(fd1);rn pipe(fd2);rn pipe(fd3);rn while((pid1=fork())==-1);rn if(pid1==0)rn p=inpipe;rn for(i=0;i,*p);rn s=s+*q;rn rn rnrnrn rn rn[/code]rnrn[img=http://hi.csdn.net/space-7301880-do-album-picid-822207-goto-down.html][/img]rnrn两个*p的值出错了,为什么啊??难道<em>read</em>函数赋值出错了,还是指针类型用错了???????
Linux下read和fgets的一些比较
Linux下<em>read</em>函数和fgets函数的比较
linux下的read和write的问题,求助!
[code=c]rn#include rn#include rn#include rn#include rn#include rn#include rnrnint main(int argc, char** argv)rnrn int fd, fd_b;rn int ret = 0;rn char buffer[128];rnrn if((fd = open("snake.c", O_RDONLY),0666) < 0)rn rn printf("First file open fail!\n");rn exit(-1);rn rn if((fd_b = open("test_new.c", O_CREAT | O_WRONLY | O_TRUNC), 0666) < 0)rn rn printf("Second file open fail!\n");rn exit(-1);rn rn//运行完后为什么test_new.c文件总是比原文件多几行呢??非常不理解!rn while(1)rn rnrn if((ret = <em>read</em>(fd, buffer, sizeof(buffer) - 1)) < 0)rn rn printf("<em>read</em> fail!\n");rn exit(-1);rn rnrn if(write(fd_b, buffer, strlen(buffer) - 1) < 0)rn rn printf("write fail!\n");rn exit(-1);rn rn //这个地方是如果<em>读取</em>完了,返回读的数小于buffer那么就应该退出。rn if(ret < (sizeof(buffer))-1)rn rn break;rn rnrn rn printf("buffer = %s\n", buffer);rnrn close(fd);rn close(fd_b);rnrn return 0;rnrnrn[/code]rn 这个小程序是在<em>linux</em>下编辑的,谢谢大师帮忙解答!!
linux下SOCKET数据接收不到问题
服务端和客户端程序在PC上可以运行,但是把服务端程序放到开发板上就不行了。开发板IP:192.168.1.6,rnpc:192.168.1.10。rn服务端程序:rn[code=C/C++][/code]#includernrn#includernrn#includernrn#includernrn#includernrn#includernrn#includernrn#includernrnrnrn#define SERVERPORT 8080rnrn#define MAXCONNET 10rnrnrnrnint main()rnrnrnrn struct sockaddr_in my_addr;rnrn struct sockaddr_in remote_addr;rnrn int sin_size;rnrn int sockfd,client_fd;rnrn if((sockfd=<em>socket</em>(AF_INET,SOCK_STREAM,0))==-1)rnrn rnrn perror("<em>socket</em> 创建失败\n");rnrn rnrn my_addr.sin_family=AF_INET;rnrn my_addr.sin_port=htons(SERVERPORT);rnrn my_addr.sin_addr.s_addr=INADDR_ANY;rnrn bzero(&(my_addr.sin_zero),8);rnrn if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))==-1)rnrn rnrn perror("bind fail\n");rnrn exit(1);rnrn rnrn if(listen(sockfd,MAXCONNET)==-1)rnrn rnrn perror("listen fail\n");rnrn exit(1);rnrn rnrn while(1)rnrn rnrn sin_size=sizeof(struct sockaddr_in);rnrn if((client_fd=accept(sockfd,(struct sockaddr*)&remote_addr,&sin_size))==-1)rnrn rnrn perror("accept fail\n");rnrn continue;rnrn rnrn printf("accept:%s\n",inet_ntoa(remote_addr.sin_addr));rnrn if(!fork())rnrn rnrn if(send(client_fd,"连接上了\n",26,0)==-1)rnrn rnrn perror("send fail\n");rnrn close(client_fd);rnrn exit(0);rnrn rnrn close(client_fd);rnrn rnrnrn rnrn交叉编译之后在开发板运行./server 没反应。rnrn
数据读取。。。结构使用
<em>数据</em>的结构: rn A rn B , C , D ..... rnB1 B2 B3 , C1 C2 C3 ,D11 D2 D3 D4..... rn rn<em>数据</em>在文本里形式: rnA 40 B 12 B1 3 1 2 3 B2 2 1 2 B3 1 1 C 13 C1 1 1 C2 2 1 2 C3 3 1 2 3 D 12 D1 1 1 D2 1 2 D3 1 1 D4 1 1 rn说明 :rnA是标签 40表示 后面40个字节是 A的值长度 (从B 到D后面的那个 1 1 每个数字一个字节)rnB表示第一个节点 rn 12 表示后面12个字节是B的值长度(从B1到C前面的那个1) 如果12 +1(B标签所占的字节)=40 那么表示A下面就只有一个节点B 否则表示还有其他(例如C D ) rn B1 表示B下面的第一个标签 rn 3 表示后面3个字节是B1值得长度 rn 1 2 3 表示B1的值 rn 如果3(3个字节)+1(3所占的字节)+1(标签B1所占的字节)=12 那么表示B 下面只有一个B1 否则。。。。 rn 12>1+1+3 所有表示还存在B2 rn 。。。。 rn 12=1(B1所占字节)+1(B1长度3所占字节)+3(B1值所占字节)+1(B2)+1+2+1(B3)+1+1 rn。。。。。。。 rn40>1(B所占字节)+12(B的总长度) rn所有存在C 和D rnrn------------------------------- rn这些<em>数据</em>我要<em>读取</em> 储存 rn问题是我要储存在哪里 MAP? tree? 数组??? rn具体怎么做呢。。。。给个思路 顺便给个最简单的 A(BCD(D1 D2))的一个例子。。。我都没用用过MAP TREE
send会阻塞比较长时间
先做一个手机直播项目,发现一个问题,在走3G网络的情况下,发送(send)缓冲区中的<em>数据</em>会耗比<em>较长</em>的<em>时间</em>,夸张的时候达到几十秒,缓冲区的<em>数据</em>不大,一般不会超过1K。协议是TCP,各位大侠,有没有办法让send不要阻塞太长的<em>时间</em>?rn关键代码如下:rnint CMySocket::sendData(void *buf, int nLen)rnrnrn int nLeft, nWritten;rn u8_t* pBuf = (u8_t*)buf;rn nLeft = nLen;rn while (nLeft > 0)rn rn nWritten = send(m_sockfd, pBuf, nLeft,0);rn if (nWritten == -1)rn rn return nWritten;rn rn nLeft -= nWritten;rn pBuf += nWritten;rn rn return nLen - nLeft;rnrn
Linux下怎么用read或recv函数完全接收socket发来的数据
int recv(int sockfd, void* buffer, int len, unsigned int flags)rnrn对方发来的<em>数据</em>是一包一包来的,就是说对方发送一个完整的信息时,多次调用send()函数,我怎么才能全部接收这些send()发来的<em>数据</em>呢?
JAVA代码 通过Socket读取返回的数据
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;p
socket如何按字节读取传来的数据.
int nNetTimeout=1000;//1秒rn setsockopt(sock,SOL_SOCKET, SO_RCVTIMEO, (char *)&nNetTimeout, sizeof(int));rn recv(sock,buff,256,0);rn因为我的<em>数据</em>不是一次性发送过来的,所以用这样的方法我的<em>数据</em>老是接收不全.比如读我想收的是25个字节,可网络上把这二十五个字节分了两次发过来,第一次收到了十五个字节.它就不收了.我想这样.rnint j=0;rn for(int i=0;i<100;i++)rnrnif(...//输入流有<em>数据</em>不阻塞)rnrnbuf[j]=<em>读取</em>一个字节;rnj++;rnif(j=25)rnbreak;rnrnelsernsleep(10);rnrnrn只是我不是学C++的,偶尔调用一下,我不知道这两个函数怎么写,请能人帮我把这两个函数写一下好吗?
在xp下怎样用socket读取http server的数据
<em>使用</em>send发送请求消息的<em>数据</em>应该是什么?很急,谢谢啊
c++ read()读取int 数组
int main()rnrn ofstream Disc("test.txt");rn int free[100];rn int temp[100];rn char buf;rn for(int i = 0; i < 100; i++)rn rn temp[i] = 0;rn free[i] = i;rn rnrn Disc.seekp(0);rn Disc.write((char *)free, 100 * sizeof(int));rn Disc.flush();rn Disc.close(); rnrn ifstream infile("test.txt");rn infile.seekg(0);rn infile.<em>read</em>((char *)temp, 100 * sizeof(int)); rn infile.close(); rnrnfor(int i = 0; i < 100; i++)rn cout << temp[0] << endl;rnrn return 0;rnrnrn我想先写入int数组到一个文件中然后在<em>读取</em>出来rn为什么读到第26个后面都是零rn如果从第27个开始往后读没有错误
在线程中读取SOCKET数据时出错
UINT th<em>read</em>(LPVOID lpParam)rnrn CServerSocket *m_pSocket=(CServerSocket *)lpParam;rn dorn rn CMessage message;rn message.Serialize(*(m_pSocket->m_pArchiveIn));rn .......rn上面代码执行到message.Serialize(*(m_pSocket->m_pArchiveIn))时出错,为什么啊
Socket方式读取OPC实时数据
1、功能简介        SocketOPCService是OPC DA的Socket通讯服务程序,它区别于KepOPC将OPC标签信息读写到关系<em>数据</em>库的功能。利用Socket方式<em>读取</em>OPC实时<em>数据</em>是当前跨平台实时<em>数据</em>交换的一种常用手段,它要求<em>数据</em>采集和传输的实时性及完整性,并能够解决操作系统、防火墙、DCOM给OPC用户带来的困扰。目前,几乎所有操作系统及开发环境均支持Socket通讯,Soc...
socket如何读取\n结束的一行数据
如题,约定一段报文以\n结束,在<em>socket</em>中有什么好办法进行判断?rn简单的做法是每次recv一个字节判断是否为"\n",但是这种做法的rn效率肯定比较低。如果一次性读入指定的字节数,再在读到的<em>数据</em>rn中进一步判断,这种情况会出现粘包现象吧。不知道有没有什么rn更好的方法实现?谢谢。rnrnhttp协议中就是以两个\r\n作为结尾的,不知道http的解析是如何做到的?
libevent如何从socket读取全部数据
最近刚开始用libevent,有个问题请教大家一下。rnServer端rnvoid buf_<em>read</em>_callback(struct bufferevent *incoming,void *arg)rn这个函数是在libevent里面注册的读<em>数据</em>的回调函数,现在有<em>数据</em>来的时候从incoming->input里面只能<em>读取</em>到4096个字节的<em>数据</em>,但是总<em>数据</em>量远远大于这个数。rn我也用evbuffer_<em>read</em>尝试直接从<em>socket</em>里面<em>读取</em><em>数据</em>,然后放到一个临时的evbuffer里面,但是性能不理想,还没有我直接调用<em>read</em>()读的快。rnlibevent本身就是为高性能设计的,应该不会设计成在input里面只放一部分<em>数据</em>,然后剩下的<em>数据</em>让我们自己去读吧?rn请高人指点一下,怎么在这个回调函数里面读大<em>数据</em>呢?rn
关于socket分布式开发下的数据删除与读取(急)
我用<em>socket</em>方式做了一个分布式开发程序。当我在客户端执行了rnForm1->ClientDataSet1->Delete();rnForm1->ClientDataSet1->ApplyUpdates(-1);rn后,结果再查询时,删除的记录还会显示出来,根本没删除,为什么?rn另外,我向下拉式列表框中添加部门表中的部门名称,为什么添加到一定数量以后就不再显示了?但在查询中还存在该记录。rnrn很急,请尽快帮忙!谢谢
socket receive循环读取send来的数据
//send 图片流rn public void SendBinary(byte[] b)rn rn tryrn rn <em>socket</em>.Send(b, b.Length, 0);rn rn catch (Exception)//如果有异常则退出rn rn <em>socket</em>.Close();rn rn rn //receive 图片流rn public byte[] ReceiveBinary()rn rnrn //Byte[] buffer = new Byte[<em>socket</em>.Available];//一个缓存区rn ////循环从缓冲区<em>读取</em><em>数据</em>rn //dorn //rn // <em>socket</em>.Receive(buffer);rn //rn //while (<em>socket</em>.Available > 0);rn //return buffer;rnrn //循环从缓冲区<em>读取</em><em>数据</em>rn string receiveData = "";rn int recvCount;//每次<em>读取</em>的<em>数据</em>量rn int availCount = 0;//获取从网络可以<em>读取</em>的<em>数据</em>量rn Byte[] buffer = new Byte[8192];//一个8×1024bits的缓存区rn dorn rn availCount = <em>socket</em>.Available;rnrn if (availCount < buffer.Length)rn rn recvCount = <em>socket</em>.Receive(buffer, availCount, SocketFlags.None);rn rn elsern rn recvCount = <em>socket</em>.Receive(buffer, buffer.Length, SocketFlags.None);rn rnrn availCount = <em>socket</em>.Available;rn if (recvCount > 0)rn rn receiveData += Encoding.UTF8.GetString(buffer, 0, recvCount);rn rn rn while (availCount > 0);rn byte[] b = System.Text.Encoding.UTF8.GetBytes(receiveData);rn return b;rnrn
SparkStreaming入门:通过socket读取数据
开始前的准备 1.因为我们等会要在<em>linux</em>创建一个<em>socket</em>,然后不停的读入<em>数据</em>,所以首先在<em>linux</em>上开启一个虚拟机,然后启动一个端口,命令:nc -lk 9999,此时就创建了一个端口是9999的进程,可以在控制台输入<em>数据</em>了,如果提示你nc状态不支持,需要安装nc,命令是:yum install nc 2.配置hosts文件,使能够根据主机名进行访问。 实际操作的代码如下: im...
Centos7 Shell - read读取控制台输入
基本语法 <em>read</em>(选项)(参数) 选项: -p:指定<em>读取</em>值时的提示符; -t:指定<em>读取</em>值时等待的<em>时间</em>(秒),如果没有在指定的<em>时间</em>内输入,直接退出程序 示例 <em>读取</em>控制台输入一个num值#!/bin/bash <em>read</em> -p "请输入一个数:" NUM echo "你输入的数是:$NUM" <em>读取</em>控制台输入一个num值,在3秒内输入。#!/bin/bash <em>read</em> -t 3 -p "请输入一...
Shell脚本集——read 读取输入
Shell脚本集——<em>read</em> <em>读取</em>输入获取键盘输入的<em>数据</em> 获取键盘输入的<em>数据</em> #!/bin/sh echo &quot;键盘输入测试\n\n&quot; <em>read</em> -p &quot;请输入一个<em>数据</em>&quot; data echo &quot;输入的<em>数据</em>:&quot; $data ...
IInternetProtocol::read读取中文显示乱码问题
网上找了一个过滤网页代码的mimefilter程序,在VC++6.0下编译运行,<em>读取</em>网页代码是英文能争取<em>读取</em>,中文却全是乱码,麻烦大家帮我看看。rn[code=c]rn char p[1024];rn HRESULT hr;rn ULONG Readtotal;rndorn rn memset(p,0,sizeof(p));rn hr = UrlMonProtocol->Read(p, sizeof(p)-1,&Readtotal);rn //p[Readtotal]='\0';rn CString pTemp=p;rn Ts=Ts+pTemp;rn MessageBoxA(h_wnd,Ts,"11233",MB_OK);//我在这里显示了一下<em>读取</em>的<em>数据</em>,发现中文全是乱码。rn while((hr != S_FALSE) && (hr != INET_E_DOWNLOAD_FAILURE) && (hr != INET_E_DATA_NOT_AVAILABLE));rn[/code]
读取时间
怎样得到指定月份的天数rn比如rn怎样得到2003年2月的天数rn怎样得到2003年3月的天数
CFile Read数据问题
我在两个线程里面频繁的<em>读取</em>同一个文件同一个位置的<em>数据</em>,但是有一个线程90%能够<em>读取</em>正确,其他时候要么乱了,要么位置不对了,读到后面一段<em>数据</em>,不知道有没有人知道原因啊?rnrn//¶ÁÈ¡Ë÷ÒýindexµÄµçÌÝÊý¾ÝrnBOOL CLiftPara::ReadLiftDB(int index, LIFT_DATABASE& lift)rnrn int iLiftNum = (int)(m_fileLift.GetLength() / sizeof(LIFT_DATABASE));rnrn if (iLiftNum == NULL) //ûÓеçÌÝ×ÊÁÏ£¬¶Á²»µ½£¬²Ù×÷ʧ°Ürn rn return FALSE;rn rnrn if (iLiftNum <= index) //µçÌÝ×ÊÁϲ»×㣬Ë÷Òý²»µ½£¬²Ù×÷ʧ°Ürn rn return FALSE;rn rnrn //EnterCriticalSectionrn //m_cs.Lock();rnrn EnterCriticalSection(&m_csApi);rnrn m_fileLift.Seek(sizeof(LIFT_DATABASE) * index, CFile::begin);rn m_fileLift.Read(&lift, sizeof(LIFT_DATABASE));rnrn LeaveCriticalSection(&m_csApi);rn //LeaveCriticalSectionrn //m_cs.Unlock();rnrn return TRUE;rnrnrn即使我加了临界区保护还是解决不了问题。
使用socket收发数据的问题
利用<em>socket</em>已实现局域网中<em>数据</em>传输的功能,现在想改为DLL的形式让其他程序直接调用。改的过程中出现个问题,就是服务器发送给客户端<em>数据</em>的时候,客户端不能触发OnReceive,请问是什么原因?客户端给服务器发送<em>数据</em>的时候可以触发OnReceive的。rn我的DLL是这样写的:从CSocket派生一个CMySocket类,然后在类中添加虚函数OnReceive。定义一个对象指针CMySocket* transfer<em>socket</em>;然后<em>使用</em>transfer<em>socket</em>->send()发送<em>数据</em>。
linuxsocket和fork结合使用的例子
<em>linux</em>下<em>socket</em>和fork结合<em>使用</em>的例子,描述了<em>socket</em>的基本流程和如何采用子进程处理客户端请求
Linux下使用Socket实现http文件下载
Linux <em>linux</em>// 转载自 http://blog.csdn.net/xiongyangg/article/details/50767482 // g++ download_demo.cpp -lpth<em>read</em> #include #include #include #include #incl
求助!关于linuxsocket和FD_ISSET的使用。不胜感激!!
目的是编写一个连接ftp的客户端。rn用cliopen(struct hostent * host, int port)建立了一个连接,函数如下rnint cliopen(struct hostent *host, int port) //建立连接的函数,需要传入的参数为ip地址(域名)和端口号rnrn int sockfd; //用来返回的描述符rn int i;rn struct sockaddr_in serv_addr; //establish a struct of the information of the serverrn bzero(&serv_addr, sizeof(serv_addr) );rn serv_addr.sin_family = AF_INET; //<em>使用</em>TCP-IP协议rn serv_addr.sin_port = htons(port); //<em>使用</em>21这个端口号 rn serv_addr.sin_addr = *( (struct in_addr *)host -> h_addr); //服务器的地址rn if( (sockfd = <em>socket</em>(AF_INET, SOCK_STREAM, 0) ) == -1)rn rn perror("<em>socket</em>创建失败!\n");rn exit(1);rn rn bzero( &(serv_addr.sin_zero), 8);rn if( connect( sockfd, (struct sockaddr *)&serv_addr, sizeof(struct sockaddr) ) == -1) rn rn perror("error happens when connecting to serve! \n");rn exit(1);rn rn return sockfd;rnrn在这里connect已经成功了。即已经连接上了ftp的服务器端。并且<em>使用</em>此函数返回的sockfd作为参数执行给服务器传命令的函数。函数如下:rnrnvoid cmd_tcp(int sockfd) //这里是命令连接的操作过程rnrn int maxfdp1, n<em>read</em>, nwrite, fd, replycode;rn fd_set rset; rn FD_ZERO(&rset); //先将描述符集清零rn maxfdp1 = sockfd + 1; /* check descriptors [0..sockfd] */ rn int tag = 0;rn for ( ; ; ) rn rn FD_SET(STDIN_FILENO, &rset); //将键盘的输入信息(用户命令)流加入到rset中rn FD_SET(sockfd, &rset); //将连接主机的套接字(服务器响应)加入到rset中rnrn if (select(maxfdp1, &rset, NULL, NULL, NULL) < 0) //当rset中有描述符被改变时,则select立即返回,现在是空转忙等待rn printf("select error\n");rn if (FD_ISSET(STDIN_FILENO, &rset)) //检测是否有键盘输入rn rn ....rn rn if (FD_ISSET(sockfd, &rset)) //检测sockfd是否变化rn rn ....rn rn rnrn问题1:在建立了连接得到sockfd以后,再把sockfd传入到这个函数中来并加入到rset,是不是根本检测不到之前的连接信息?也就是说如果ftp服务器返回了一个指令,到了cmd_tcp里面是不会select到的?rn问题2:是否应该在for里面写上FD_SET(STDIN_FILENO, &rset); 和 FD_SET(sockfd, &rset); ?这样每次检测信息做出相应操作后都会让他们重新加入到rset中,为什么要这样做?是第一个参数类似一个数组或是什么东西吗?加入后如果同之前有变化就会检测出来?rnrn超级大菜鸟,词不达意,理解万岁!rn rn
使用socket抓去网页数据
自己封了一个MY<em>socket</em>,底层用的是<em>socket</em> ,(需要登录)用来抓网页<em>数据</em>。rn我同时开10个线程去抓,但是返回的结果并不是线程启动的顺序,有可能最先启动的线程最后才反回结果(不知道是为什么)。rn目前我已经实现了一些功能:rn1.<em>socket</em>长连接rn2.自动登录,并通过时钟刷新某个网页来保持session不失效rn3. System.Net.ServicePointManager.DefaultConnectionLimit = 1000rn如果我想尽可能的提高抓取的速度,需要怎么做?rnPS:白天人多的时候服务器非常卡,闲时完整的一个来回3s左右,最卡的时候差不多要15s。rn200分不够,可以再开帖放分。谢谢了
linux下可否读取fat32分区的数据?!
怎么读!!??
bug 关于Linux下QT读取串口数据
请问大家在QT中用串口<em>读取</em><em>数据</em>时,是用定时器去读还是用串口类去读的??rnrn定时器去读,每次可以将串口的所有<em>数据</em>全部<em>读取</em>出来;串口类<em>读取</em>,是串口有<em>数据</em>就<em>读取</em>,但是<em>读取</em>的<em>数据</em>不完整。rnrn我<em>使用</em>的是定时器定时去读,利用定时器或者线程延时去读<em>数据</em>,好多次debug时都会莫名的奔溃,而多次指向的位置却是在rnQByteArray buf = serial-><em>read</em>All;rnrn这个serial是用串口类实例化的,<em>read</em>All也是内部的程序。。疑问?!rnrn或者rnrn我是在工控机运行QT程序,难道和PC机之间有差别导致<em>读取</em><em>数据</em>奔溃么??rnrn实在不解 还请处理过该错的大神指点指点!!
RFID的数据读取(代码 .linux下运行)
<em>linux</em>下的RFID<em>数据</em>的<em>读取</em>,并且存于sqlite<em>数据</em>库等
linux下串口read不能显示数据是怎么回事呀?
1. receive.c程序清单:rn/*******************************************************rn*ilename:receive.crn* Description:Receive data from Serial_Portrn* Date:rn*******************************************************/rn/*********************头文件定义***********************/rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include "math.h"rn#define max_buffer_size 100 /*定义缓冲区最大宽度*/rn/*********************************************************/rnint fd,s;rnint open_serial(int k)rnrnif(k==0) /*串口选择*/rnrnfd = open("/dev/ttyS0",O_RDWR|O_NOCTTY); /*读写方式打开串口*/rnperror("open /dev/ttyS0");rnrnelsernrnfd = open("/dev/ttyS1",O_RDWR|O_NOCTTY);rnperror("open /dev/ttyS1");rnrnif(fd == -1) /*打开失败*/rnreturn -1;rnelsernreturn 0;rnrn/********************************************************************/rnint main()rnrnchar hd[max_buffer_size],*rbuf; /*定义接收缓冲区*/rnint flag_close, retv,i,ncount="0";rnstruct termios opt;rnint realdata="0";rn/*******************************************************************/rnopen_serial(0); /*打开串口1*/rn/*******************************************************************/rntcgetattr(fd,&opt);rncfmakeraw(&opt);rn/*****************************************************************/rncfsetispeed(&opt,B9600); /*波特率设置为9600bps*/rncfsetospeed(&opt,B9600);rn/*******************************************************************/rntcsetattr(fd,TCSANOW,&opt);rnrbuf="hd"; /*<em>数据</em>保存*/rnprintf("<em>read</em>y for receiving data...\n");rnretv="<em>read</em>"(fd,rbuf,1); /*接收<em>数据</em>*/rnif(retv==-1)rnrnperror("<em>read</em>"); /*读状态标志判断*/rnrn/*************************开始接收<em>数据</em>******************************/rnwhile(*rbuf!='\n') /*判断<em>数据</em>是否接收完毕*/rnrnncount+=1;rnrbuf++;rnretv="<em>read</em>"(fd,rbuf,1);rnif(retv==-1)rnrnperror("<em>read</em>");rnrnrn/*******************************************************************/rnprintf("The data received is:\n"); /*输出接收到的<em>数据</em>*/rnfor(i="0";irn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#define max_buffer_size 100 /*定义缓冲区最大宽度*/rn/*******************************************/rnint fd; /*定义设备文件描述符*/rnint flag_close;rnint open_serial(int k)rnrnif(k==0) /*串口选择*/rnrnfd = open("/dev/ttyS0",O_RDWR|O_NOCTTY); /*读写方式打开串口*/rnperror("open /dev/ttyS0");rnrnelsernrnfd = open("/dev/ttyS1",O_RDWR|O_NOCTTY);rnperror("open /dev/ttyS1");rnrnif(fd == -1) /*打开失败*/rnreturn -1;rnelsernreturn 0;rnrn/********************************************************************/rnrnint main(int argc, char *argv[ ] )rnrnchar sbuf[]="Hello,this is a Serial_Port test!\n";/*待发送的内容,以\n为结束标志*/rnint sfd,retv,i;rnstruct termios option;rnint length="sizeof"(sbuf);/*发送缓冲区<em>数据</em>宽度*/rn/*******************************************************************/rnopen_serial(0); /*打开串口1*/rn/*******************************************************************/rnprintf("<em>read</em>y for sending data...\n"); /*准备开始发送<em>数据</em>*/rntcgetattr(fd,&option);rncfmakeraw(&option);rn/*****************************************************************/rncfsetispeed(&opt,B9600); /*波特率设置为9600bps*/rncfsetospeed(&opt,B9600);rn/*******************************************************************/rntcsetattr(fd,TCSANOW,&option);rnretv="write"(fd,sbuf,length); /*接收<em>数据</em>*/rnif(retv==-1)rnrnperror("write");rnrnprintf("the number of char sent is %d\n",retv);rnrnflag_close =close(fd);rnif(flag_close ==-1) /*判断是否成功关闭文件*/rnprintf(“Close the Device failur!\n”);rnrnreturn 0;rnrn/****************************结束***********************************/rn分别将上面的俩个程序编译之后就可以运行了,如果是在两个不同的平台上运行,比如,在开发板上运行<em>数据</em>发送程序write(write.c编译后得到),在宿主机上运行结收<em>数据</em>程序<em>read</em>(<em>read</em>.c编译得到),采用串口线将二者正确连接之后,就可以运行来看实际的效果了:rn首先在宿主机端运行<em>数据</em>接收程序receive:rn[zhang@localhost]# ./receivern[zhang@localhost]#open /dev/ttyS0: Successrn<em>read</em>y for receiving data...rnThe data received is:rnHello,this is a Serial_Port test!rn[zhang@localhost]#rn在接收端运行完程序之后再到发送端运行<em>数据</em>发送程序send:rn#./sendrn<em>read</em>y for sending data...rnthe number of char sent is 35rn#rn运行完发送程序之后就可以在接收端看到接收的<em>数据</em>了。也可以在一台PC机上来运行这两个程序,这时需要将串口线的2、3脚短路连接即可(自发自收),实际运行的步骤与上面相同rnrnrn----------------------------------------------------------------------------------rn-----------------------------------------------------------------------------rn我把上面的receive和send分别编译好后,在windows的vmare虚拟机<em>linux</em>里运行send,windows与工控机用串口线连上,在工控机里运行receive,send显示打开端口成功,发送成功,但是receive就一直停在<em>read</em>y for receiving data...,这是什么原因呀?
请教: read一个socket, read返回需要多长时间?
<em>read</em>一个<em>socket</em>, 假设<em>read</em>一直读不到<em>数据</em>的话, 它是否会一直rn往那<em>read</em>, 是否会超时, 返回需要多长<em>时间</em>?
Linux下读串口数据read()返回“Input/Output error”
如题,本人想用串口读外设的<em>数据</em>,文件fd获取没问题,调研<em>read</em>()函数,返回值为-1,打印错误发现是“Input/Output error”。rn找了一些方法,但不奏效,求问各位前辈这种情况如何解决!rn以下是源代码rnrn[code=c]rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rn#include rnrn#define BAUDRATE B115200rn#define MODEMDEVICE "/dev/ttyS3"rnrnint main()rnrn int fd,c=0,res,i;// i 是循环变量rn struct termios oldtio,newtio;rn char buf[256];rn printf("start ...\n");rn fd = open(MODEMDEVICE,O_RDWR|O_NOCTTY); // 打开pc的com2端口rn if(fd;rn for(i=0;i
读取数据表中时间小于今天的数据
我要<em>读取</em><em>数据</em>表list中<em>时间</em>字段time2小于明天的<em>数据</em>rnrn表list中的字段time2格式为2009-6-13 0:07:16这种rnrn我写的是rn[code=SQL]sql="select * from [list] where time2>'"&(date)+1&"' order by id desc"[/code]rnrn然后报错是:标准表达式中<em>数据</em>类型不匹配。rnrnrn请高手帮忙指点下该怎么写?谢谢!
读取两个时间之间的数据问题,急!
现有个表名为table,里面有这样两个字段data和date,其中data记录<em>数据</em>,date记录<em>时间</em>样式如"19-8-2005",有若干这样的<em>数据</em>。现在,我想读出2005-8-1到2005-8-30里的data<em>数据</em>,请问怎么写sql语句?rnrn我是这样写的:rnselect data from table where (datediff("d",date,1-8-2005)>=0) and (datediff("d",30-8-2005,date)<=0)rnrn怎么读不出来?太愚钝了,呵呵。各位帮帮忙。
Matab注册机Matab注册机下载
Matab注册机 Matab注册机 Matab注册机 Matab注册机 相关下载链接:[url=//download.csdn.net/download/tear332/3371735?utm_source=bbsseo]//download.csdn.net/download/tear332/3371735?utm_source=bbsseo[/url]
视频采集卡立岩H60主控端下载
1:网络设置 H60系列压缩卡使用了先进的CS2网络内核。只需注册一个CS2帐号就可以在远程,,通过服务器:http://cs2.lonrock.com:88进行远程监控。在不能使用Internet网,只在内网监控的时候,可以根据内网的IP地址和IE端口在IE上使用,在本例中可以是http://192.168.1.3 如果IE端口改为其他端口,如82,则可以使用http://192.168.1.3:82进行监控 打开监控系统选择--系统操作-- 相关下载链接:[url=//download.csdn.net/download/zgsysw/4019138?utm_source=bbsseo]//download.csdn.net/download/zgsysw/4019138?utm_source=bbsseo[/url]
google gfs下载
google gfs 中文文档。。。我们已经为Google迅速增长的数据处理需要而设计和实现了Google File System&#40;GFS&#41;。GFS和上一个分布式文件系统有着很多相同的设计目标,比如性能,扩展性,可靠性,以及可用性。不过,他的设计是基于我们应用的工作量和技术环境驱动的,包括现在和预期的,都有部分和上一个版本的约定有点不同。这就要求我们重新审视传统的设计选择,以及探索究极的设计要点。 相关下载链接:[url=//download.csdn.net/download/liufangzhe793528089/4119892?utm_source=bbsseo]//download.csdn.net/download/liufangzhe793528089/4119892?utm_source=bbsseo[/url]
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件
我们是很有底线的