socket can发包后,接收阻塞 [问题点数:20分]

Bbs1
本版专家分:0
结帖率 0%
Linux内核Socket CAN中文文档
自己在年假中空闲之余翻译的内核中Socket CAN的文档,原文地址在: http://lxr.linux.no/linux+v2.6.34/Documentation/networking/<em>can</em>.txt 但是这篇文档没有涉及广播管理协议套接字 (SOCK_DGRAM) 的内容。 另外一篇比较好的Socket CAN的英文文档是(详细介绍了广播管理协议套接字): Low
Linux CAN说明文档
文档原名称:<em>can</em>.txt,位于 linux-3.2.0-m3352/Documentation/networking/<em>can</em>.txt。 CAN 控制器局域网络协议族之 Readme 文件(aka Socket CAN)。另外在该文档的后边附加一个CAN收发测试程序,用于与下位机通信。 目录 1 概述 / 什么是 Socket CAN? 2 目的 / 为什么要使用 <em>socket</em> API? 3 so...
Linux CAN编程详解
转自 http://velep.com/archives/1181.html Linux 系统中CAN 接口配置 在 Linux 系统中, CAN 总线接口设备作为网络设备被系统进行统一管理。在控制台下, CAN 总线的配置和以太网的配置使用相同的命令。 在控制台上输入命令: ifconfig –a 可以得到以下结果: 在上面的结果中, eth0 设备为以太网接口, <em>can</em>0和ca
对Socket CAN的理解(3)——【Socket CAN发送数据流程】
转载请注明出处:http://blog.csdn.net/Righthek 谢谢!     对于本文,我们将从用户层使用Socket CAN进行数据发送时,数据从用户空间到底层驱动的整个通信流程,用户层使用Socket CAN可参考上一篇文章《对Socket CAN的理解(2)——【Socket的原理及使用】》。     当我们在用户层通过<em>socket</em>进行CAN数据的发送时,需要进行以下操
SocketCAN
From Wikipedia, the free encyclopedia   (Redirected from Socket<em>can</em>) Jump to: navigation, search Free software portal SocketCAN is a set of open source CAN drivers an
SOCKET发包顺序及接收时的问题
1使用TCP连接应该是按顺序收的吧,怎么样在发现完了通知服务器比较好呢?rn2出现过这样一种情况,客户端向服务器发A数据,发完后又发B数据,服务器在<em>接收</em>B数据的过程中,又收到一次A数据。客户端只发送了一次,服务器为什么会收两次。虽然客户端有多个,但是我用IP和数据的内容确认了一下应该是同一个客户端的信息,并且客户端确实只发一次。怎么解释这样的事情,避免服务器处理重复数据呢?
socket阻塞与非阻塞
C/S模型在企业级的软件开发中非常常见,高并发网络通讯更是很多项目的核心模块,学好<em>socket</em> 网络编程显得尤为重要,本课程分为TCP/IP 协议、<em>socket</em>基础与进阶的异步通讯模型三个部分,通过浅显易懂的代码与讲解,让你的C++网络编程能力得到质的飞跃,具备开发高并发服务器的能力!
socket阻塞与非阻塞
<em>socket</em><em>阻塞</em>与非<em>阻塞</em>
Unity socket 关于阻塞接收的问题
如果<em>socket</em>的recive放在update里,当这个比较卡的时候,就会丢失掉部分数据。最好是单独开一个线程来处理。 using UnityEngine; using System.Collections; using System.Net.Sockets; using System.Text; using System.Threading; using System.Collectio...
阻塞socket怎么发送和接收自定义类型的数据
-
SocketCAN bug记录
问题:因为在平板显示是开线程<em>接收</em>CAN数据,而sokect在JNI<em>接收</em>数据的时候是<em>阻塞</em>方法。在关闭线程的时候,方法还是会在<em>阻塞</em>。解决:在jni里面修改<em>socket</em><em>阻塞</em>,code:if (-1 == fcntl(fd, F_SETFL, O_NONBLOCK)) { printf("fcntl <em>socket</em> error!\n"); } struct timeval tv; tv.tv_sec
socket超时处理机制
 在网络通讯中,<em>socket</em>处于<em>阻塞</em>模式运行时,其存在着超时处理。以下总结下在那些<em>阻塞</em>函数的处理方法。这里摘抄一段描述<em>阻塞</em>函数的描述,非常到位。所谓<em>阻塞</em>函数,是指其完成指定的任务之前不允许程序调用另一个函数,在Windows下还会<em>阻塞</em>本线程消息的发送。所谓非<em>阻塞</em>函数,是指操作启动之后,如果可以立即得到结果就返回结果,否则返回表示结果需要等待的错误信息,不等待任务完成函数就返回。首先,异步函数是非阻...
Socket read阻塞 处理方法
从Socket上读取对端发过来的数据一般有两种方法:1)按照字节流读取[java] view plain copyBufferedInputStream in = new BufferedInputStream(<em>socket</em>.getInputStream()); int r = -1; List l = new LinkedList(); while ((r = in.read()) != -1)
Socket中的read方法阻塞问题
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
对Socket CAN的理解(1)——【CAN总线原理】
转载请注明出处:http://blog.csdn.net/Righthek 谢谢! 由于Socket CAN涉及到CAN总线协议、套接字、Linux网络设备驱动等。因此,为了能够全面地了解Socket CAN的原理。我们需要了解以下几个方面的知识点: (1)CAN总线协议; (2)Socket原理; (3)Linux网络设备驱动; 当熟悉以下三个方面的知识点后,我们再去分析基
阻塞socket导致了接收线程的挂掉?
在一个SP系统中,我有一个<em>接收</em>线程,用来接受来自ISMG的消息, rn我通过tcp采用<em>阻塞</em>式的数据获取,平台已经平稳运行两个月,但是最近的一个问题很头痛 rn就是<em>接收</em>线程死掉(只能这样理解,就是线程里不执行了),请问是不是因为<em>阻塞</em>式<em>socket</em>导致了线程的挂掉? rn哪位大哥能否给点建议或意见呢?谢谢
请教高手,SOCKET接收阻塞和发送非阻塞
各位大侠,我在程序中使用了SOCKET UDP编程,未使用I/O模型,大家都知道默认情况下SOCKET是<em>阻塞</em>的,因此我创建的<em>接收</em>线程里放置了recvfrom并通过不断循环(<em>阻塞</em>)<em>接收</em>网络数据,在时码板的中断中sendto发送数据。rn前几天发现了这一情况,当服务器未开机时,我使用sendto每次发送1024字节以上的数据帧时,总要<em>阻塞</em>几秒钟(因为性能要求高,程序几乎不能发生任何<em>阻塞</em>,否则影响时码板中断造成程序死慢),因此我就把<em>socket</em>设置为非<em>阻塞</em>模式,sendto不<em>阻塞</em>了,但是新问题又来了recvfrom的<em>接收</em>线程由于非<em>阻塞</em>不断地循环,造成程序CPU占用100%。rn请问这种情况一定要使用I/O模型才能解决吗?我的目标是“<em>接收</em><em>阻塞</em>,发生不<em>阻塞</em>!”,仅此而已!rn先谢谢了!rn
socket阻塞
客户端: connect: 需要TCP三次握手,所以是<em>阻塞</em>的
socket 阻塞
各位: rn 请教一个问题,如何在使用sen(),recv()函数时候,将通信方式设置为<em>socket</em>的<em>阻塞</em>方式呢?是通过send()函数的返回值吗?那么,recv()函数如何将协议栈清空呢?rn 感谢!
liunx下使用socket实现can总线数据接收
liunx下使用<em>socket</em>实现<em>can</em>总线数据<em>接收</em>,可以用来参考,还没有readme
clientsocket 阻塞到底怎么接收和发送数据!
是用线程吗?给个简单的例子吧
对Socket CAN的理解(2)——【Socket的原理及使用】
转载请注明出处:http://blog.csdn.net/Righthek 谢谢!            为了能够对Socket CAN的深入理解,我们需要了解Socket的机制。          Socket的中文翻译为“插座”,在计算机世界里称为套接字。Socket最初是作为网络上不同主机之间进程的通信接口,后来应用越来越广,在同一主机上的不同进程之间通信也可以用Socket。简单来说,
socket can 编程
文档原名称:<em>can</em>.txt,位于 linux-3.2.0-m3352/Documentation/networking/<em>can</em>.txt。 CAN 控制器局域网络协议族之 Readme 文件(aka Socket CAN)。另外在该文档的后边附加一个CAN收发测试程序,用于与下位机通信。
socket阻塞
我在写一个服务端和客户端通过<em>socket</em>的udp通信的程序.实现和网上的例子差不多,服务端是先bind某个端口,然后用recvfrom<em>阻塞</em>等待<em>接收</em>客户端的数据,<em>接收</em>到数据后再用sendto向客户端发送应答数据;客户端启动后就用sendto向服务端发送数据,然后用recvfrom等待服务端的应答.rnrn现在的问题是,当服务端先启动时,通信正常;客户端先启动的时候,到了recvfrom的时候就直接返回-1的错误而并没有<em>阻塞</em>等待服务端的应答,这是为什么?rnrn另一个相同的帖子:http://community.csdn.net/Expert/topic/5776/5776223.xml?temp=.9725305
发包 LINUX下接收发传真
如是哪位LINUX高手有在LINUX下<em>接收</em>发传真的经验,我司项目中需要使用这个功能,需要外发给这一块,详情请与我公司联系. rnrn联系人:景先生rn联系电话:13599530757rn邮箱:tongyou217451@163.com
socket接收控件里的阻塞和非阻塞方式接收是什么意思?
他们有什么不同和区别呢?rn
Linux socket阻塞与非阻塞
<em>阻塞</em>和非<em>阻塞</em>:        在网络编程中对于一个网络句柄会遇到<em>阻塞</em>IO和非<em>阻塞</em>IO的概念,这里对于两种<em>socket</em>先做一下说明:  <em>阻塞</em>IO:<em>socket</em>的<em>阻塞</em>模式意味着必须要做完IO操作(包括错误)才会返回(默认是<em>阻塞</em>的)例如:服务器端调用recvfrom,如果没有客户端没有发送数据,此时recvfrom处于<em>阻塞</em>态,就会一直<em>阻塞</em>下去  非<em>阻塞</em>IO:非<em>阻塞</em>模式下无论操作是否完成都立刻返回,需要通...
SocketCan 问题笔记
Can Open 失败 未运行 参数设置命令 ip link set CanX up type <em>can</em> bitrate 500000 Can 错误处理 出现太多的错误 设备可能计入总线关闭状态,给<em>can</em>restart-ms 设置一个非零值,可以开启总线关闭自动恢复功能 ip link set CanX type <em>can</em> restart-ms 100...
CAN总线开发实例
下面通过实例来说明CAN总线接口的使用方法。在本例中,有两个进程,其中一个进程负责报文的发送(标识符为0x11和0x22),另一个进程负责报文的<em>接收</em>和过滤(只<em>接收</em>标识符为0x11的报文)。 /* 1.报文发送程序 */ #include #include #include #include #include #include #include #include
Linux socket CAN编程示例
如下所示,代码展示了Linux下CAN的发送和<em>接收</em>:#include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include &amp;lt;string.h&amp;gt; #include &amp;lt;unistd.h&amp;gt; #include &amp;lt;net/if.h&amp;gt; #include &amp;lt;sys/ioctl.h&amp;gt; #include &amp;lt;sys...
linux的socket CAN驱动介绍
在linux中,CAN总线的驱动有两种实现
对Linux Socket CAN的理解(3)-Socket CAN发送数据流程
对于本文,我们将从用户层使用Socket CAN进行数据发送时,数据从用户空间到底层驱动的整个通信流程,用户层使用Socket CAN可参考上文章《对Socket CAN的理解(2)-Socket的原理及使用》。     当我们在用户层通过<em>socket</em>进行CAN数据的发送时,需要进行以下操作:     (1) 创建一个套接字<em>socket</em>,采用AF_CAN协议;     (2)将创建的
探讨下socket阻塞与非阻塞
目前项目中需要负责的模块是GTP协议,GPRS网络协议的一种,如果谁熟悉这块请加我好友 谢谢!rnrn现在具体实现应该是用C语言,基于UDP/IP 的<em>socket</em>,GTP协议分为控制面和用户面,这两块实现rnrn循环<em>接收</em>发送过来的消息,使用recvfrom()函数,默认情况下,套接字应该是<em>阻塞</em>的,可以建立两个线程来实现rnrn现在我想问的就是,如果修改为非<em>阻塞</em>的模式,有什么好的解决方法rnrnselect模型 没怎么应用过,修改成非<em>阻塞</em>的,不知道性能上有没有改进rnrn另外考虑到程序移植,程序运行的平台是vxworks,不知道做成动态库还可以...
socket阻塞与非阻塞的区别
<em>socket</em><em>阻塞</em>与非<em>阻塞</em>的区别 <em>socket</em> <em>socket</em><em>阻塞</em>与非<em>阻塞</em>的区别
C++ socket 阻塞与非阻塞
C++ Socket编程示例; <em>阻塞</em>和非<em>阻塞</em>,涉及多线程编程,以及定时清除服务器连接资源;
tcp socket阻塞与非阻塞
1.sock默认为<em>阻塞</em>模式,下面的代码可对sock设置为非<em>阻塞</em>模式  int flags = fcntl(sock, F_GETFL, 0);     fcntl(sock, F_SETFL, flags | O_NONBLOCK); 2.假设当前代码为服务器,并且已经执行过如下代码, 当sock为<em>阻塞</em>模式,调用accept会<em>阻塞</em>直到一个请求到来 当sock为非<em>阻塞</em>模式,accept
关于socket阻塞与非阻塞
在我创建了一个<em>socket</em>只后,我就用fcntl设置这个套接字为非<em>阻塞</em>模式;rnconnect和accept这两个函数是非<em>阻塞</em>的,rn我想问,recv和send这两个函数也是非<em>阻塞</em>的吗?
linux的socket can学习,指令汇总:
1、#ip link set <em>can</em>X down //关闭<em>can</em>设备; 2、#ip link set <em>can</em>X up   //开启<em>can</em>设备; 3、#ip -details link show <em>can</em>X //显示<em>can</em>设备详细信息; 4、#<em>can</em>dump <em>can</em>X  //<em>接收</em><em>can</em>总线发来的数据; 5、#ifconfig <em>can</em>X down //关闭<em>can</em>设备,以便配置; 6、#ip l
linux socket can程序cantool
转自:http://velep.com/archives/1177.html最近写了个自认为不错的基于linux <em>socket</em> <em>can</em>程序,主要功能:程序具备全部CAN功能,包括CAN标准帧/扩展帧<em>接收</em>与发送、CAN总线错误判断、环回等功能适用基于LINUX SOCKET机制实现的CAN接口,可用于嵌入式LINUX的CAN测试程序采用标准LINUX命令行参数选项形式,接受用户参数现把源码进行分享功...
socket发包工具
<em>socket</em> 收<em>发包</em> 工具 <em>socket</em> 收<em>发包</em> 工具
socket 发包问题
服务器代码: rnclass Programrn rn private static byte[]message=new byte[1024];rn private static Socket serverSocket;rn private static Int32 iPort = 8888;rnrn private static List userList = new List();rnrn static void Main(string[] args)rn rn IPAddress ip = IPAddress.Any;rn serverSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);rn serverSocket.Bind(new IPEndPoint(ip, iPort));rn serverSocket.Listen(Int32.MaxValue);rn Console.WriteLine("启动监听0成功",serverSocket.LocalEndPoint.ToString());rnrn Thread acceptThread = new Thread(AcceptConnect);rn acceptThread.Start();rn rnrn public static void AcceptConnect()rn rn Socket newClient = null;rn while (true)rn rn rn newClient = serverSocket.Accept();rn User user = new User(newClient);rnrn rnrn Thread threadReceive = new Thread(ReceiveMessage);rn threadReceive.Start(user);rnrn userList.Add(user);rn rn rn rnrn public static void ReceiveMessage(object userState)rn rn User user = (User)userState;rnrn while (true)rn rn Int32 receiveNum = user.client_<em>socket</em>.Receive(message);rnrn String receiveString = null;rn receiveString = Encoding.ASCII.GetString(message, 0, receiveNum);rnrn String[] splitString = receiveString.Split(',');rnrnrn Console.WriteLine("<em>接收</em>客户端0消息1", user.UserName, receiveString);rnrn switch (splitString[0].ToLower())rn rn case "login":rn rn user.UserName = splitString[1];rn Console.WriteLine("新连接0进入...", user.UserName);rn SendMessageToAllClient(user, receiveString);rn break;rn case "logout":rn rn SendMessageToAllClient(user, receiveString);rn userList.Remove(user);rn break;rn default:rn rn for (Int32 i = 0; i < userList.Count; i++)rn rn if (userList[i].UserName == splitString[0])rn rn SendToClient(userList[i], splitString[1]);rnrn rn rn break;rn rn rn rn rn rnrnrnrn public static void SendMessageToAllClient(User user,String message)rn rnrn rn if (message.Split(',')[0].ToLower() == "login")rn rn for (Int32 i = 0; i < userList.Count; i++)rn rn SendToClient(user, "login," + userList[i].UserName);rnrn rnrn for (Int32 i = 0; i < userList.Count; i++)rn rn if (userList[i].UserName != user.UserName)rn rn SendToClient(userList[i], "login," + user.UserName);rn rn rn rn else if (message.Split(',')[0].ToLower() == "logout")rn rn for (Int32 i = 0; i < userList.Count; i++)rn rn if (userList[i].UserName != user.UserName)rn rn SendToClient(userList[i], "logout," + user.UserName);rn rnrn rn rn rnrn rnrn public static void SendToClient(User user, String message)rn rn user.client_<em>socket</em>.Send(Encoding.ASCII.GetBytes(message));rn rn rnrn客户端代码:rn public partial class Form1 : Formrn rnrn private static Socket clientSocket;rn private static Int32 iPort = 8888;rn private static byte[]message=new byte[1024];rnrn public Form1()rn rn InitializeComponent();rn Random rd = new Random((Int32)DateTime.Now.Ticks);rn TB_USERNAME.Text = rd.Next(1, 1000).ToString();rn rnrn private void B_SEND_Click(object sender, EventArgs e)rn rn clientSocket.Send(Encoding.ASCII.GetBytes(TB_USERNAME.Text +","+ TB_CHAT.Text));rn rnrn private void B_LOGIN_Click(object sender, EventArgs e)rn rn B_LOGIN.Enabled = false;rn tryrn rn IPAddress ip = IPAddress.Parse("127.0.0.1");rn clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);rn clientSocket.Connect(ip, iPort);rnrn clientSocket.Send(Encoding.ASCII.GetBytes("Login,"+ TB_USERNAME.Text));rnrn LB_CHAT_INFO.Items.Add("连接成功....");rnrn Thread receiveThread = new Thread(new ThreadStart(ReceiveMessage));rn receiveThread.IsBackground = true;rn receiveThread.Start();rnrn rn catch (System.Exception ex)rn rn LB_CHAT_INFO.Items.Add("连接失败....");rn B_LOGIN.Enabled = true;rn rn rn rnrn public void ReceiveMessage()rn rn while (true)rn rn Int32 receiveNum = clientSocket.Receive(message);rn String receiveString = Encoding.ASCII.GetString(message);rn string[] splitString = receiveString.Split(',');rnrn switch (splitString[0])rn rn case "login":rn rn AddUser(splitString[1]);rnrn break;rn case "logout":rn rn RemoveUser(splitString[1]);rn break;rn default:rn rn AddChat(receiveString);rn break;rn rn rn rn rn rnrnrn private delegate void AddChatDelegate(String message);rnrn public void AddChat(String message)rn rn if (LB_CHAT_INFO.InvokeRequired)rn rn AddChatDelegate d = AddChat;rn LB_CHAT_INFO.Invoke(d, message);rn rn elsern rn LB_CHAT_INFO.Items.Add(message);rn rnrn rnrn private delegate void AddUserDelegate(String name);rnrn public void AddUser(String name)rn rn if (LB_USER_ONLINE.InvokeRequired)rn rn AddUserDelegate d = AddUser;rn LB_USER_ONLINE.Invoke(d,name);rn rn elsern rn LB_USER_ONLINE.Items.Add(name);rn rn rn rnrn private delegate void RemoveUserDelegate(String name);rnrn public void RemoveUser(String name)rn rn if (LB_USER_ONLINE.InvokeRequired)rn rn AddUserDelegate d = RemoveUser;rn LB_USER_ONLINE.Invoke(d, name);rn rn elsern rn LB_USER_ONLINE.Items.Remove(name);rn rnrn rn rnrn为什么后面连接进入的User,看不到前面的User
Socket通信,断线后socket仍然阻塞.
一端是java服务端运行在PCrn一端运行在android上.rn今天测试发现主动关闭abdorid wifi的时候,android端抛出异常.rn但是pc端的Socket仍然在<em>阻塞</em>(也就是in.read()的<em>阻塞</em>),有什么办法可以在pc端判断连接已经断开?rnrnsendUrgentData();这个方法试过了,也不行.rnrn我用的是 IO包里面的实现 暂时还不想考虑 NIO
SOCKET中Read阻塞后怎么超时?
在send一条消息后,我们需要read来等待另一端的反馈rn可是如果另一端迟迟不反馈,我们就得有个超时机制吧rn现在好像NetworkStream.Read(byte,0,255)就是一个<em>阻塞</em>的。rn怎么来避免这样无休止的<em>阻塞</em>呢?
阻塞socket和非阻塞socket(一)
刚开始做项目时,要用到<em>socket</em>通信。那时为了弄清<em>socket</em>编程做了几个实验,主要是针对send和recv在几种特殊的情况下的返回值。 <em>阻塞</em><em>socket</em>:    特殊情况(1):在<em>接收</em>端和发送端正常频繁的接受和发送时,突然关闭<em>接收</em>端的<em>socket</em>(优雅的关闭,调用close<em>socket</em>函数),此时的发送端的send函数返回-1,WSAGetLastError 的编码为10054.代表W
linux socket can驱动,使用canutils测试,发送接收失败,感谢有经验的提供意见
-
CAN总线应用开发接口
由于系统将CAN设备作为网络设备进行管理,因此在CAN总线应用开发方面,Linux提供了SocketCAN接口,使得CAN总线通信近似于和以太网的通信,应用程序开发接口更加通用,也更加灵活。 此外,通过https://gitorious.org/linux-<em>can</em>/<em>can</em>-utils网站发布的基于SocketCAN的<em>can</em>-utils工具套件,也可以实现简易的CAN总线通信。 下面具体
canutils-4.0.6——libsocketcan编译
关于lib<em>socket</em><em>can</em>的编译 1、解压lib<em>socket</em><em>can</em>-0.0.9.tar.bz2。执行configure命令 ./configure --host=arm-none-linux-gnu
socket can 应用程序
#include #include #include #include #include #include #include #include #include #include int <em>can</em>_recv() { int sock_fd, i; unsigned long nbytes, len; struct sockaddr_<em>can</em> addr; struct if
阻塞socket和非阻塞socket(二)
非<em>阻塞</em><em>socket</em>: 一般在项目中我们很多情况下都是有多个<em>socket</em>传输数据,而管理多个<em>socket</em>有几种I/O模型。如select模型、WSAAsyncSelect模型、WSAEventSelect模型、Overlapped I\O模型、完成端口等等。 根据项目的具体的情况选择相应的I\O模型。我在项目中用到最多的就是WSAAsyncSelect模型、WSAEventSelect模型这
关于阻塞接收
recv()一直<em>阻塞</em>直到有数据<em>接收</em>!rn如何设置<em>阻塞</em><em>接收</em>的时间?rn是用setsockopt()吗?rn我现在要设置成1秒钟,具体使用方法,代码是?rn谢谢了rn
阻塞接收的问题?
我用的是线程<em>阻塞</em><em>接收</em>,如果线路断了,我的线程<em>接收</em>(也就是在recv()函数处)就会<em>阻塞</em>了,但我如何知道线程已被<em>阻塞</em>,还有如何从线程<em>阻塞</em>中退出。rnrnrn急,急,急呀!!!!
CAN接收滤波计算器
CAN<em>接收</em>滤波计算器_支持SJA1000和AdawinCANCard
CAN接收程序
CAN<em>接收</em>程序,基于ARM-M3内核,CAN<em>接收</em>经典
Linux下CAN总线速率设置,socketCAN。
背景:飞思卡尔Freescale的ARM9处理器i.MX25系列。
SocketCan手册
SocketCan手册,介绍SocketCan的主要数据结构以及协议的设计结构
Linux Socket CAN中文文档
转载于http://blog.csdn.net/yuanlulu/article/details/7220060 自己在年假中空闲之余翻译的内核中Socket CAN的文档,原文地址在: http://lxr.linux.no/linux+v2.6.34/Documentation/networking/<em>can</em>.txt 但是这篇文档没有涉及广播管理协议套接字 (SOCK_DGR
交叉编译canutils与libsocketcan
转载地址:http://blog.chinaunix.net/uid-20680966-id-4585059.htmllib<em>socket</em><em>can</em>链接http://www.pengutronix.de/software/lib<em>socket</em><em>can</em>/download/下载到/home/zengming/download/tar -xvf lib<em>socket</em><em>can</em>-0.0.10.tar.bz2cd libs
QT 环境下开发socketCan接口程序
使用头文件 #include #include "QTimer" #include "QTime" #include "QMessageBox" #include #include #include #include #include "stdio.h" #include "stdlib.h" #include "unistd.h" #include "fcn
CAN 接收滤波计算器
CAN <em>接收</em>滤波计算器(支持SJA1000 和Adawin CAN Card)
can接收与发送
详细<em>接收</em>了CAN通信的<em>接收</em>与发送,中断的编写,滤波的设计
can接收发送
给出了STM32的CAN通讯代码和详细说明,为初学者学习STM32的CAN通讯具有很大帮助
STM8S208的CAN接收问题
用CAN可以进行正常的发送,但是在<em>接收</em>的时候遇到了问题。rnCAN的过滤器禁用了,当从上位机<em>接收</em>到数据帧时,发现单片机并未<em>接收</em>到;rn[code=c]rnwhile(!(CAN_RFR&0x03));//查看FMP是否有变化,发现程序一直停留在这,FMP始终为0[/code]rnrn利用CAN 盒子发送的数据是提示发送成功的,用示波器也可看到在单片机上CAN的<em>接收</em>引脚有波形,只是CAN_RFR寄存器的值始终为0,不知道是哪里出错了,请指点下,好拙计啊。。。[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif][/img]rnrnCAN的FIFO是不是需要进行一些特别的配置?
EM9287 Linux Socket CAN驱动简介
EM9287 Linux Socket CAN驱动简介--技术天地 http://www.emtronix.com/article/article2013603.html 一、简述           EM9287工控主板CPU为Freescale 的iMX287,主频454MHz,以具有丰富的通讯接口为特色,可同时支持双网口、7路串口、32路GPIO、SPI、I2C以
xilinx 的socket CAN驱动介绍
linux的<em>socket</em> CAN驱动介绍 网址:http://blog.csdn.net/linyangspring/article/details/27186911       在Linux中,CAN总线的驱动有两种实现方式:字符设备以及<em>socket</em> <em>can</em>驱动。Socket CAN使用伯克利的Socket接口和Linux网络协议栈,这
Socket can 远程帧
远程帧 远程帧由6个场组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结束。远程帧不存在数据场。 远程帧的RTR位必须是隐位。 DLC的数据值是独立的,它可以是0~8中的任何数值,为对应数据帧的数据长度。 pp头文件 #ifndef  __CANPROTO_DEF_H #define  __CANPROTO_DEF_H #include "printdef.h" #
socket can程序
基于<em>socket</em> <em>can</em>编写简单的应用程序进行CAN报文的<em>接收</em>与发送
阻塞socket
引言 返回错误EWOULDBLOCK或EAGAIN。 套接字的默认状态是<em>阻塞</em>的。这就意味着当发出一个不能立即完成的套接字调用时,其进 程将被投入睡眠,等待相应操作完成。可能<em>阻塞</em>的套接字调用可分为以下四类: ( 1 ) 输入操作,包括read 、 readv、 recv、 recvfrom和 recvmsg共5个函数。如果某个进程对一个<em>阻塞</em>的TCP套接字(默认设置)调用这些输入函数之,而且该...
can数据接收流程
cpu : stm32rn用的是cpu内部的CAN控制器,用的是库函数编程。rnrn数据<em>接收</em>要求9个报文(用滤波器处理),设了<em>接收</em>中断、满中断、溢出中断。rnrn10ms读取数据一次。rnrn<em>接收</em>中断处理流程:中断响应后,若是<em>接收</em>中断,读取fifo中的数据,释放fifo。若是满中断或溢出中断读3次数据,释放fifo。rnrnCAN线程:10ms 有数据读出,则处理数据,没有则返回。rnrn现在的问题,常会漏数据,报文的发送周期10ms~5s.rnrn在<em>can</em>数据<em>接收</em>或中断处理上是否可以优化。改善数据<em>接收</em>效率或可以加大读取数据周期。rnrn我也考虑了另一个方案,就是每次采样读出9个报文后再退出流程。rnrn请教大牛们!!
Linux socket编程实战(阻塞
1.服务端 #include&lt;sys/<em>socket</em>.h&gt; #include&lt;sys/types.h&gt; #include&lt;arpa/inet.h&gt; #include&lt;unistd.h&gt; #include&lt;stdio.h&gt; #include&lt;errno.h&gt; int main(int argc, char* argv[]){...
socket读写阻塞,百思不得其解!!!
server端rnrnin = new BufferedReader(new InputStreamReader(<em>socket</em>.getInputStream()));rnout = new BufferedWriter(new OutputStreamWriter(<em>socket</em>.getOutputStream()));rn//读入数据rnString line="",str="";rnwhile((line = in.readLine())!=null)rn str = str + line + "\n";rn System.out.println(line);rnrnSystem.out.println(""+str);rn//写出数据rnout.write(str);rnout.flush();rnrnclient端rnrnin = new BufferedReader(new InputStreamReader(<em>socket</em>.getInputStream()));rnout = new BufferedWriter(new OutputStreamWriter(<em>socket</em>.getOutputStream()));rn//写出数据rnout.write("kaksdf\nkklasdf\n");rnout.flush();rn//读入数据rnString line="",str="";rnwhile((line = in.readLine())!=null)rn str = str + line + "\n";rn System.out.println(line);rnrnSystem.out.println(""+str);rnrnrn运行结果是server端将内容打印出来就停在while((line=in.readLine())!=null)不往下走,而client端也停在while((line=in.readLine())!=null)。rnrn怎么会这样??rn如何解决???
socket无法阻塞的问题
我在一个子线程中启动 <em>socket</em>.connect到我的服务器。然后用一个 while(true) 循环包囊着子线程的 run() 方法。当我调用子线程的start()方法后发现一个很奇怪的问题--rn在子线程中的 <em>socket</em>.connect 如果没有连接到服务器的话变化马上跳过其所在的行,而正常情况下,<em>socket</em>连接启动后,如果服务器没有相应,soket应该一直停留在启动连接的哪一行等待服务器响应,待连接成功后才执行下一行才对啊。。请问为何现在<em>socket</em>不<em>阻塞</em>了呢?rnrnpackage BackGround;rnimport java.io.File;rnimport java.io.FileInputStream;rnimport java.io.FileOutputStream;rnimport java.io.InputStream;rnimport java.io.ObjectOutputStream;rnimport java.net.InetSocketAddress;rnimport java.net.Socket;rnimport java.net.SocketAddress;rnrnimport android.database.Cursor;rnimport android.util.Log;rnrnimport com.example.sqlite.*;rnimport com.example.start.*;rnrnpublic class HandleUnsend extends Thread rn ChatObject Co;rn @Overridern public void run()rn while(true)rnCursor c=Select.WholeTableToRAM(Global.sb,"Unsend");rn Log.i("read unsend","reading unsend");rn if(c.getCount()>0)rn rn rn Socket sk=new Socket();rn rn rn tryrn Log.i("start <em>socket</em>","ready to build <em>socket</em>");rn sk.connect(new InetSocketAddress("192.168.0.102", 1314));rn rn Log.i("start <em>socket</em>","<em>socket</em> built");rn for(c.moveToFirst();c.isAfterLast();c.moveToNext())rn rn Log.v("read data to Co","read to Chat Oj");rn Co=new ChatObject();rn Co.toId=c.getString(0);rn Co.fromId=c.getString(1);rn Co.serverPath=c.getString(2);rn Co.localPath=c.getString(3);rn //the 4 is REMOTE_SAY,usless herern Co.Content=c.getString(5);rn Co.msgType=c.getString(6);rn Co.Time=c.getString(7);rn //Co.Time is long ,but the 7th column is Send_Out_Time,String type.rn Co.Duration=c.getString(8);rn if(Co.msgType.equals("1"))rn //if it is a voice msg,make a fosrn File f2Send=new File(Co.localPath);rn long fileLength=f2Send.length();rn byte[] fByte=new byte[(int)fileLength];rn //int.MAX_VALUE is 2^32-1,almost equal to 2.14G,so rn //it won't occur an outOfBundent Exceptionrn FileInputStream Fis=new FileInputStream(f2Send);rn Fis.read(fByte,0,fByte.length);rn Co.fos=new FileOutputStream(Co.serverPath);rn Co.fos.write(fByte,0,fByte.length);rn //writing the data into fos is means to reduce the work of severrn //when the sever get the fos in the ChatObject.class ,what it need to rn //do is just flush the fos.but the fault of that method is that it make rn //the server harder to ajust the file saving path.for it is defined b4 sentrn Log.i("write Co","Write Co finish");rn rn ObjectOutputStream Objo=new ObjectOutputStream(sk.getOutputStream());rn Objo.writeObject(Co);rn Objo.flush();rn Log.i("flush Co","Flush Co finish");rn //following is to receive confirm msg from server to check wether the data rn //is successfully sentrn InputStream ins;rn byte inByte[]=new byte[1024];rn ins=sk.getInputStream();rn Log.v("getInputStream","got inputStream");rn ins.read(inByte,0,10);rn String Respone=new String(inByte,"utf-8");rn rn if(Respone.equals("1"))rn rn //if the respone from sever is 1,means it is sent successfully,rn //we <em>can</em> delete the rn //data in tablern String str_Delete="delete from UNSEND where SEND_OUT_TIME='"+Co.Time+"';";rn Global.sb.execSQL(str_Delete);rn rn sk.close();rn rnrncatch(Exception e);rnelsern tryThread.sleep(10000);catch(Exception e)e.printStackTrace();; rn// this.start(); rn rn rn rn rn rn rn rn rn rn
java中非阻塞socket
java中Socket类默认是<em>阻塞</em>的。如果想使用非<em>阻塞</em>的<em>socket</em>该如何做呢?
交叉编译canutils 和 libsocketcan
lib<em>socket</em><em>can</em>链接 http://www.pengutronix.de/software/lib<em>socket</em><em>can</em>/download/ 下载到/home/zengming/download/ tar -xvf lib<em>socket</em><em>can</em>-0.0.10.tar.bz2 cd lib<em>socket</em><em>can</em>-0.0.10/ 编译: ./configure --host=arm-linux make ...
如何让Socket阻塞
RT?
求教socket阻塞”的概念?
求教<em>socket</em>“<em>阻塞</em>”的概念?
Socket 阻塞问题
在Socket的客户端和服务端都随时可以发送和<em>接收</em>数据的情况下,怎样防止<em>阻塞</em>rnrn高手们,怎么解决,rn先谢谢啦
socket阻塞的问题
各位大虾,小弟在调试8688的wifi过程当中发现,连接ap时发送psk密码的命令会延时很长时间。然后一路跟踪,发现在wpa_suppli<em>can</em>t的代码中有这么一段:rnrnif (send(ctrl->s, _cmd, _cmd_len, 0) < 0) rn os_free(cmd_buf);rn return -1;rn rn os_free(cmd_buf);rnrn for (;;) rn#ifdef ANDROIDrn tv.tv_sec = 10;rn#elsern tv.tv_sec = 2;rn#endifrn tv.tv_usec = 0;rn FD_ZERO(&rfds);rn FD_SET(ctrl->s, &rfds);rn [b]res = select(ctrl->s + 1, &rfds, NULL, NULL, &tv);//<em>阻塞</em>发生在这里[/b][color=#FF0000][/color] if (FD_ISSET(ctrl->s, &rfds)) rn res = recv(ctrl->s, reply, *reply_len, 0);rnrn我想请问大侠们,这个<em>阻塞</em>的原因是什么呀?如何继续跟踪问题呢?谢谢!!
Python中非阻塞socket
来自<em>socket</em>的unblock(非<em>阻塞</em>) 前言 由于普通的server-<em>socket</em>一次只能处理一个client-<em>socket</em>. 因为<em>socket</em>在accept等待<em>接收</em>和recv等待数据数据时都会<em>阻塞</em>, 每次处理client只能应对一个<em>socket</em>. unblock code server # server import <em>socket</em> server = <em>socket</em>...
java Socket阻塞问题
一、问题描述 客户端<em>接收</em>消息的时候,如果服务端没有发送数据过来,在读取数据的时候会被<em>阻塞</em>,停在这步不进行下去。reader.read(chars)我调试的时候,发现,<em>socket</em>连接成功,并且在<em>接收</em>线程的地方设置断点的时候可以正常<em>接收</em>到消息,如果不设置断点就无法<em>接收</em>到消息,说明在什么地方被<em>阻塞</em>了。就找到是上面的原因。 二、代码实例 两个线程,输入和输出new Thread(tKeepThrea
Socket阻塞的问题
我从web端(简称A端)发送消息给服务器,再通过服务器发送给c/s客户端(简称B端)<em>接收</em>,我写个测试循环发送,开始B端可以<em>接收</em>,但是发送一些消息之后B端就不能<em>接收</em>了,这是什么原因造成的啊?希望有人帮助分析一下[color=#FF0000](声明一下,由于代码是改别人的,太多太杂,暂时不贴上了,只希望大家谁遇见过这种情况,或者帮忙分析一下就行)[/color]
win socket阻塞问题
Windows下,我用win <em>socket</em>做了一个网络通信程序,不是VC的CSocket。是用win <em>socket</em>默认的<em>阻塞</em>模式,我的客户端要<em>接收</em>服务器的数据,服务器的数据包是定长结构体,然后我调用如下语句:rnstruct p;rnrecv(client,(char*)&p,sizeof(p),MSG_WAITALL);rn当加WAITALL标记时,recv并不<em>阻塞</em>到缓冲区中的数据达到sizeof(p)再返回,而是直接返回,并且recv返回-1,这是什么问题,想不明白这个?请教一下。当把WAITALL变成0时,recv就可以读到数据,但是读到的数据并没有保证正好是一个结构体的长度,我知道可以用while来读到满足长度为止,但是,为什么WAITALL不起作用呢,高分求助。rn另外,Windows下,如何刷新<em>socket</em>的缓冲区让数据马上发送出去,像Linux下一样,直接flush?
socket 阻塞 问题
项目中用SOCKET<em>接收</em>另一台机器传的XML,刚开始能收到,过一会儿就收不到了,请大家帮忙分析一下.......rn // 创建读取数据的Reader,里面指定了需要的编码类型。rn BufferedReader rd = new BufferedReader(new InputStreamReader(<em>socket</em>.getInputStream(),"UTF-8"));rn String str;rn while ((str = rd.readLine()) != null) rn System.out.println(str);rn rnrnrn
阻塞SOCKET SERVER的问题
rnrnrn最近用vc++6.0写了个简单的<em>阻塞</em>的循环TCP SERVER,我要说的情况是这样,rn有两个客户端A和B请求与SERVER通信,请求的时候有先后次序的,rn首先A发起连接且成功了,接下来SERVER正在RCVE A 发过来的数据,为了模拟,我让A和B都发十次数据,发送完毕后退出客户端,每次发送都间隔2秒,rnrn当客户端A发送两三次的时候,我启动B再发起连接,可这时B客户端connect()也返回了成功,同样也十次send数据,可居然也成功了,但此时SERVER正在忙于收A客户端的数据中呢,我的疑惑是服务器此时没执行ACCPET,为什么也会返回成功。rnrn希望能得到大家的帮助,谢谢rn我贴一下tcpserver关键性的代码rnrnrn[code=C/C++] tcpserver.cpp rn while (TRUE)rn rnrn rn ClientSocket = accept(ListeningSocket, (SOCKADDR *) rn &ClientAddr,&ClientAddrLen);rnrn if (ClientSocket==INVALID_SOCKET )rn rn PrintError("Call accpet");rn rn //显示连接的端口号和IP地址rn printf( "%d.Connection from %s on port %d\n" ,ntime,inet_ntoa(ClientAddr.sin_addr),ntohs(ClientAddr.sin_port));rnrnrn rn printf("Wait to Recveive data from client <em>socket</em>\n");rnrn char cBuffer[100]="";rn int nret;rn while (TRUE)rn rn nret=recv(ClientSocket,cBuffer,99,0);rn rn if (nret==SOCKET_ERROR)rn rn PrintError("call recv");rn break;rn rn elsern rnrn if (nret==ZERO)rn rn PrintError("call recv");rn break;rnrn rn elsern rn //显示收到的数据rn printf("%s ",cBuffer);rn rn rnrn rn rn rnrn[/code]rnrn
关于socket阻塞问题
下面是用到的其中一个函数rn现在是运行的过程中,一旦accept()出现问题的话,程序就<em>阻塞</em>了。rn也不知道应该如何去设置超时时间,先前设定的也没有用。rn于是请教诸位了。rnrn也查过一些网页,想问问看看能不能不用 非<em>阻塞</em><em>socket</em>的程序,就能解决这个问题。rnrnrn//Upload用来向服务器上载一个文件,调用前需要设置属性m_IdeaID,m_TaskIDrn//这时客户机是Socket Server,服务器是Socket ClientrnBOOL CSystemStatus::Upload(CString strFilename)rnrn //先判断能否打开文件rn CFile myFile;rn if(!myFile.Open(strFilename, CFile::modeRead | CFile::typeBinary))rn rn AfxMessageBox("无法打开文件:"+strFilename);rn return FALSE;rn rnrn //服务器IP地址rn CString strServerIP = GetServerIP();rn //客户端IP地址rn CString strClientIP = GetClientIP();rnrn //向服务器登记需要上载的文件信息rn TransferFile upInfo;rn upInfo.IdeaID = m_IdeaID;rn upInfo.TaskID = m_TaskID;rn upInfo.Directory = m_Directory;rn upInfo.Sender = "Client"; //客户机发送rn upInfo.SendIP = strClientIP;rn upInfo.Receiver = "Server"; //服务器<em>接收</em>rn upInfo.RecIP = strServerIP;rn upInfo.FileName = GetFileName(strFilename); //上载的文件名,这个文件名含有路径,这里需要把路径去掉rn upInfo.Flag = "0"; //设置未处理标志,等待服务器处理rn CTransferFilesDB transfer;rn transfer.ExecuteInsert(upInfo); //存入数据库rnrn AfxSocketInit(NULL);rn CSocket sockSrvr; rn sockSrvr.Create(PORT); // Creates our server <em>socket</em>rn sockSrvr.Listen(); // Start listening for the client at PORTrnrn int TimeOut=6000; //设置发送超时6秒 rn if(::setsockopt(sockSrvr,SOL_SOCKET,SO_SNDTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR)rn rn return 0; rn rn TimeOut=6000;//设置<em>接收</em>超时6秒 rn if(::setsockopt(sockSrvr,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR) rn return 0; rn rn rn [color=#FF0000]CSocket sockRecv;rn sockSrvr.Accept(sockRecv); // Use another CSocket to accept the connection[/color]rn rn TimeOut=6000; //设置发送超时6秒 rn if(::setsockopt(sockRecv,SOL_SOCKET,SO_SNDTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR)rn rn return 0; rn rn TimeOut=6000;//设置<em>接收</em>超时6秒 rn if(::setsockopt(sockRecv,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR) rn return 0; rn rnrn if(sockRecv==INVALID_SOCKET)rn rn //错误处理rn AfxMessageBox("超时错误!");rn return FALSE;rn rnAfxMessageBox("<em>接收</em>连接成功");rn int myFileLength = myFile.GetLength(); // Going to send the correct File Sizernrn sockRecv.Send(&myFileLength, 4); // 4 bytes longrn rn char sendBuf[MM];rn for(int i=0;i<=myFileLength;i+=MM)rn rn myFile.Read(sendBuf, sizeof(sendBuf));rn sockRecv.Send(sendBuf,sizeof(sendBuf)); //Send the whole thing nowrn Sleep(10);rn rn if(myFileLength%MM!=0)rn rn myFile.Read(sendBuf, myFileLength%MM);rn sockRecv.Send(sendBuf,myFileLength%MM);rn Sleep(10);rn rn myFile.Close();rnrn sockRecv.Close();rn return TRUE;rn
linux下阻塞socket设置
用以下方法将<em>socket</em>设置为非<em>阻塞</em>方式rnint flags = fcntl(<em>socket</em>, F_GETFL, 0); rnfcntl(<em>socket</em>, F_SETFL, flags | O_NONBLOCK);rnrn现在想将非<em>阻塞</em>的设置回<em>阻塞</em>的是否可以用rnrnint flags = fcntl(<em>socket</em>, F_GETFL, 0); rnfcntl(<em>socket</em>, F_SETFL, flags & ~O_NONBLOCK);rn呢?
Thread與Socket阻塞
現在在做一個多線程與Socket配合的問題﹐現在在接受數據端老是過2到3個小時就有一條線程死掉﹐還有兩個類一個是界面啟動線程的﹐一個是對<em>接收</em>數據處理﹐這段程試是兩個死循環﹐外循環是不斷監聽是否有數據傳過來﹐內循環是在數據庫里搜索數據什么處理完并返回信息。望高手能給我點意見﹐不勝感激﹗rnrn public void run()rn rn tryrn rn String readMess="";rn client=null;rn in=null;rn out=null;rn client =new Socket(ip,port);rn //client =new Socket("10.242.10.75",4660);rn System.out.println(line+" CONNECTION OK!");rn out = new DataOutputStream(client.getOutputStream());rn in = new DataInputStream(client.getInputStream());rn flag=true;rn while(true) rn rn /*rn if(in.available()==0)rn rn //break;rn continue;rn rn */rn System.out.print(line);rn System.out.println(client.isConnected());rn readMess=in.readLine().trim();rn //System.out.println(readMess);rn if(readMess.equals("")||readMess==null)rn rn System.out.println("while end!");rn break;rn rn elsern rn if(!client.isConnected())rn rn System.out.println(line+" is no connection!");rn rn id=trans.getID(readMess);rn strData=trans.getData(readMess);rn //System.out.println(id+" data= "+strData);rn insert_RCV_Data(strData,id);rn int count=0;rn while(true)rn rn int getflag=get_send_flag(id);rn if(getflag==0)rn rn sleep(150);rn count++;rn if(count==20)rn rn rn try rn rn Statement stmt=con.createStatement();rn String strsqlupdate="update SYS_DATA_CHANNEL set flag=4 where id="+id+" and flag=0";rn stmt.executeUpdate(strsqlupdate);rn stmt.close();rn rn catch(Exception ex) rn rn System.out.println("errorUpdate : "+ex.getMessage());rn rn break;rn rn rn else if(getflag==1||getflag==2)rn rn trans.sendData(out,strData,id,false);rn this.data.insertElementAt("ID:"+id+" Data:"+strData,0);rn get_send_Data();rn break;rn rn rn rn rn rn rn catch(Exception e)rn rn System.out.println(ip+" Thread run error :"+e.getMessage());rn rn
CCS-2.2 如何运行一个程序 CCS-2.2 如何运行一个程序下载
CCS-2.2 如何运行一个程序 CCS-2.2 如何运行一个程序 相关下载链接:[url=//download.csdn.net/download/Augusdi/2993166?utm_source=bbsseo]//download.csdn.net/download/Augusdi/2993166?utm_source=bbsseo[/url]
java 蜗牛游戏下载
一个图为蜗牛的小游戏,是用java开发的小游戏 相关下载链接:[url=//download.csdn.net/download/qjlufi/4163548?utm_source=bbsseo]//download.csdn.net/download/qjlufi/4163548?utm_source=bbsseo[/url]
AspJpeg v2.4.0.1+注册机下载
AspJpeg v2.4.0.1+注册机 相关下载链接:[url=//download.csdn.net/download/xwinds/4197007?utm_source=bbsseo]//download.csdn.net/download/xwinds/4197007?utm_source=bbsseo[/url]
我们是很有底线的