精华内容
下载资源
问答
  • sendBuffer和sendList

    千次阅读 2018-03-30 14:19:45
    gateserver下发给客户端的消息 只是放到connect的sendlist里面,然后enableMask设置为write等到多路复用检测到他需要发的时候,可能sendlist已经有很多了个packet了然后多路复用检测到 这个联系需要send,然后开始...
    gateserver下发给客户端的消息 只是放到connect的sendlist里面,然后enableMask设置为write
    等到多路复用检测到他需要发的时候,可能sendlist已经有很多了个packet了
    然后多路复用检测到 这个联系需要send,然后开始onSend


    注意下面是核心
    现在我们onSend里面要做的就是 把sendlist里面这些发出去
    sendlist.pop()
    写入buffer,直到sendlist为空,或者buffer满了,然后把这个buffer发送
    所以有可能,一个netpacket一个包,有可能多个消息一个包,还有可能半个消息在一个包里面


    而onRecv这里,客户端发来的消息,不会有多个一起发什么的,一个消息发一次,
    所以收,只需要区分现在在解析头还是在解析体就行了,记住位置,即使一个netpacket
    一次只到了一部分也不要紧,我只有当完整的解析出来了一个netpakcet才会
    通知别人来处理 
    通知谁来处理?
    通知给我这个connection对应的processor
    processor也是一个线程,多个connection对应一个processor,类似multiplexor
    很多连接都过来消息了,push进了某个processor的messgeQueue(参见安全的消息队列)
    然后processor线程,检测到里面有消息,就pop然后处理,连接消息呢,断开消息呢
    还是游戏消息,游戏消息,就给server去处理,显然,这里是gateserver
    gateserver收到后,呵呵,根据proc协议号的区间,判断是什么类型,往哪个server发。
    比如是移动,那么就发给gameserver


    gameserver收到后,知道哪个玩家要做啥,然后添加到对应player的消息队列,
    player update的时候,deal这个消息。比如移动


    tcpserver的recvbuffer大小和sendbuffer大小 1048576 1m
    tcpclient的recvbuffer大小和sendbuffer大小 32767  31k


    当multiplexor里面很多connection比如1000个,每个都有很多数据需要发送,
    select epoll 的reactor模式,我们是挨个处理的,所以,很有可能轮到我这个connection
    的时候,sendlist里面已经有很多很多消息了,网路游戏下行消息远大于上行,AOI嘛
    如果buffer设置的小,那么一次发不完,
    所以有个 检测 canNextSend,如果sendlist还没空
    就继续发,直到发光为止
    而onRecv就是一次ok,


    onRecv就是系统层的::recv,读的内容写在recvbuffer里面,然后我解析就行了,
    因为客户端发来的消息是一个个的,并不复杂


    另外 写完或者发完,我并没有改变fd的状态,因为是边缘触发的,(没有设置,默认是水平触发)

    否则你还得完了后改变下读写状态(这段话有问题,因为我发现写完会disableMask(write))

    当发现发送完成,就会把这个写标记改为0,后面找到他就认为他不需要发,

    可是奇怪的是发现读标记一直没有禁掉,因为在LT模式下,会一直读,读完为止。

    写的话,写完了,手动清掉写标记,后面就不会触发写

    展开全文
  • SendKeys.Send 方法

    千次阅读 2016-06-14 22:27:32
    SendKeys.Send 方法 .NET Framework (current version) .NET Framework 3.5 .NET Framework 3.0 .NET Framework 2.0 向活动应用程序发送击键。 命名空间: System.Windows....

    SendKeys.Send 方法

    向活动应用程序发送击键。

    命名空间:  System.Windows.Forms
    程序集:  System.Windows.Forms(在 System.Windows.Forms.dll 中)

    语法


    public static void Send(
    	string keys
    )
    

    参数

    keys
    类型:System.String
    要发送的击键字符串。

    异常


    异常 条件
    InvalidOperationException

    没有可向其发送击键的活动应用程序。

    ArgumentException

    keys 并不表示有效击键

    备注


    每个键都由一个或多个字符表示。 要指定单个键盘字符,请使用该字符本身。 例如,要表示字母 A,请将字符串“A”传递给方法。 要表示多个字符,请将各个附加字符追加到它之前的字符的后面。 要表示字母 A、B 和 C,请将参数指定为“ABC”。

    加号 (+)、插入符号 (^)、百分号 (%)、波形符 (~) 以及圆括号 () 对 SendKeys 具有特殊含义。 要指定这些字符中的某个字符请将其放在大括号 ({}) 例如,要指定加号,请使用“{+}”。 要指定大括号字符,请使用“{{}”和“{}}”。 中括号 ([ ]) 对 SendKeys 没有特殊含义,但必须将它们放在大括号内。 在其他应用程序中,中括号具有特殊含义,此含义可能会在发生动态数据交换 (DDE) 时起重要作用。

    警告说明警告

    如果应用程序用于键盘各不相同的国际用途,则使用 Send 可能产生不可预知的结果,应避免使用它。

    要指定在按键(如 Enter 或 Tab)时不显示的字符,以及表示操作而不表示字符的键,请使用下表中的代码。

    代码

    Backspace

    {BACKSPACE} {BS} 或 {BKSP}

    Break

    {BREAK}

    Caps Lock

    {CAPSLOCK}

    Del 或 Delete

    {DELETE} 或 {DEL}

    向下键

    {DOWN}

    End

    {END}

    Enter

    {ENTER} 或 ~

    Esc

    {ESC}

    Help

    {HELP}

    Home

    {HOME}

    Ins 或 Insert

    {INSERT} 或 {INS}

    向左键

    {LEFT}

    Num Lock

    {NUMLOCK}

    Page Down

    {PGDN}

    向上翻页

    {PGUP}

    Print Screen

    {PRTSC}(保留供将来使用)

    向右键

    {RIGHT}

    Scroll Lock

    {SCROLLLOCK}

    TAB

    {TAB}

    向上键

    {UP}

    F1

    {F1}

    F2

    {F2}

    F3

    {F3}

    F4

    {F4}

    F5

    {F5}

    F6

    {F6}

    F7

    {F7}

    F8

    {F8}

    F9

    {F9}

    F10

    {F10}

    F11

    {F11}

    F12

    {F12}

    F13

    {F13}

    F14

    {F14}

    F15

    {F15}

    F16

    {F16}

    数字键盘加号

    {ADD}

    数字键盘减号

    {SUBTRACT}

    数字键盘乘号

    {MULTIPLY}

    数字键盘除号

    {DIVIDE}

    要指定与 Shift、Ctrl 和 Alt 键的任意组合一起使用的键,请在这些键代码之前加上以下一段或多段代码。

    代码

    Shift

    +

    Ctrl

    ^

    Alt

    %

    要指定在按一些键时应同时按住 Shift、Ctrl 和 Alt 键的任意组合,请将这些键的代码放在括号内。 例如,要指定按 E 和 C 时同时按住 Shift 键,请使用“+(EC)”。 要指定按 E 时应按住 Shift,之后按 C 时不按住 Shift,请使用“+EC”。

    要指定重复键,请使用格式 {key number}。 键和数字之间必须放一空格。 例如,{LEFT 42} 表示按向左键 42 次;{h 10} 表示按 H 10 次。

    注意注意

    因为没有可用来激活另一个应用程序的托管方法,所以可以在当前应用程序中使用此类,或使用本机 Windows 方法(如 FindWindowSetForegroundWindow)来强制聚焦到其他应用程序上。

    注意注意

    已针对 .NET Framework 3.0 更新了 SendKeys 类,以便在 Windows Vista 中运行的应用程序中使用该类。 Windows Vista 的增强安全性(称为用户帐户控制或 UAC)可以防止以前的实现按预期工作。

    SendKeys 类易出现计时问题,某些开发人员必须解决这些问题。 更新的实现仍易出现计时问题,但它略快,可能需要对解决方法进行更改。 SendKeys 类尝试先使用以前的实现,如果失败,则使用新实现。 因此,在不同的操作系统上,SendKeys 类的行为可能不同。 此外,如果 SendKeys 类使用新实现,则将消息发送到另一进程时,SendWait 方法不会等待处理这些消息。

    如果无论操作系统如何应用程序都依赖一致的行为,则通过在 app.config 文件中添加下列应用程序设置,可以强制 SendKeys 类使用新实现。

    <appSettings>

    <add key="SendKeys" value="SendInput"/>

    </appSettings>

    要强制 SendKeys 类使用以前的实现,请改用值 "JournalHook"

    示例


    下面的代码示例演示如何使用 Send 方法。若要运行该示例,请将下面的代码粘贴到包含一个名为 Button1 的按钮的窗体 Form1 中。 请确保该 Click 事件已与此示例中的事件处理方法关联。 应将该按钮控件的 TabIndex 属性设置为 0。 当该示例运行时,双击该窗体以触发按钮的 Click 事件。

    	// Clicking Button1 causes a message box to appear.
    	private void Button1_Click(System.Object sender, System.EventArgs e)
    	{
    		MessageBox.Show("Click here!");
    	}
    
    
    	// Use the SendKeys.Send method to raise the Button1 click event 
    	// and display the message box.
    	private void Form1_DoubleClick(object sender, System.EventArgs e)
    	{
    
    		// Send the enter key; since the tab stop of Button1 is 0, this
    		// will trigger the click event.
    		SendKeys.Send("{ENTER}");
    	}
    
    
    展开全文
  • sdp recv/send/sendrecv

    千次阅读 2019-11-13 15:26:54
    3 实体行为、操作过程 3.1 初始协商的Offer请求 实体A <-> 实体B,实体首先发起Offer请求,内容如2节所示,对于作何一个媒体流/媒体通道,... 如果媒体流方向标为recvonly/sendrecv,即a=recvonly或a=send...

    https://www.cnblogs.com/idignew/p/7249056.html

     

    3 实体行为、操作过程
    3.1 初始协商的Offer请求

    实体A <-> 实体B,实体首先发起Offer请求,内容如2节所示,对于作何一个媒体流/媒体通道,这时实体A必须:

    a.       如果媒体流方向标为recvonly/sendrecv,即a=recvonly或a=sendrecv,则A必须(MUST)准备好在这个IP和端口上接收实体B发来的媒体流;

    b.       如果媒体流方向标为sendonly/inactive,即a=sendonly或a=inactive,则A不需要进行准备。

    3.2 Answer响应

    实体B收到A的请求offer后,根据自身支持的媒体类型和编码策略,回复响应。

    a. 如果实体B回复的响应中的媒体流数量和顺序必须(MUST)和请求offer一致,以便实体A进行甄别和决策。即m行的数量和顺序必须一致,B不能(MUST NOT)擅自增加或删除媒体流。如果B不支持某个媒体流,可以在对应的端口置0,但不能不带这个m行描述。

    b. 对于某种媒体,实体B必须(MUST)从请求offer中选出A支持且自己也支持的该媒体的编码标识集,并且可以(MAY)附带自己支持的其它类型编码。

    c. 对于响应消息中各个媒体的方向:

    如果请求某媒体流的方向为sendonly,那么响应中对应媒体的方向必须为recvonly;

    如果请求某媒体流的方向为recvonly,那么响应中对应媒体的方向必须为sendonly;

    如果请求某媒体流的方向为sendrecv,那么响应中对应媒体的方向可以为sendrecv/sendonly/recvonly/inactive中的一种;

    如果请求某媒体流的方向为inactive,那么响应中对应媒体的方向必须为inactive;

    d.       响应answer里提供IP和端口,指示Offerer本端期望用于接收媒体流的IP和端口,一旦响应发出之后,Offerer必须(MUST)准备好在这个IP和端口上接收实体A发来的媒体流。

    e.       如果请求offer中带了ptime(媒体流打包间隔)的a行或带宽的a行,则响应answer也应该(SHOULD)相应的携带。

    f.        实体B Offerer应该(SHOULD)使用实体A比较期望的编码生成媒体流发送。一般来说对于m行,如m=video 0 RTP/AVP 31 34,排充越靠前的编码表示该实体越希望以这个编码作为载体,这里示例31(H261),34(H263)中H261为A更期望使用的编码类型。同理,当实体A收到响应answer后也是这样理解的。

     

     

    展开全文
  • send函数详解

    千次阅读 2018-11-18 03:37:17
    send函数详解

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

            服务端都已经accept了客户端的请求,于是客户端与服务端也就勾搭上了,可以暧昧了,可以发信息了,怎么发送呢?用send函数即可,我们来看看send函数的原型:

    WINSOCK_API_LINKAGEintWSAAPIsend(    SOCKET s,    const char FAR * buf,    int len,    int flags    );

           第一个参数是客户端对应的套接字(千万注意),第二个参数指向发送的信息所在的缓冲区(内存),第三个参数是缓冲区的大小,第四个参数一般设置为0. 

           send函数的返回值非常重要,如果成功,则返回发送的字节数,如果失败,则返回对应的失败码。

               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • SendKeys.SendWait是要等待按键消息被处理后才返回,相当于同步的效果,类似于Win32 API里的SendMessage SendKeys.Send则将按键消息放到windows消息队列里就返回了,不会等待消息被处理,相当于异步的,类似于Win...
  • expect中的sendsend_user和puts的区别

    千次阅读 2020-05-09 11:18:01
    send会将expect脚本中需要的信息发送给spawn启动的那个进程,而send_user只是回显用户发出的信息,类似于shell中的echo而已。 如下例所示,使用send发送密码给spawn启动的进程,使用send_user发送提示信息回显给用户...
  • VB.NET用全局热键启动SendKeys.send文字全变空白,用按钮启动就没问题就没问题![图片说明](https://img-ask.csdn.net/upload/201711/06/1509971382_687047.jpg) > ``` Public Const WM_HOTKEY = &H312 Public...
  • C#中的SendKeys.Send操作CMD命令的问题

    千次阅读 2017-09-05 23:09:45
    C#的SendKeys.SendSendKeys.SendWait用法。
  • send简单改写sendfile64

    千次阅读 2014-10-16 08:44:24
    这篇博客就是在成熟的nws框架下面, epoll采用边缘ET方式, 用send简单改写一下sendfile64,算是熟悉一下流程。 epoll的ET方式只有在写缓冲由满到不满或者读缓冲区由空到非空时候才触发,所以我们每次利用send发送...
  • SendKeys.SendSendKeys.SendWait键代码

    千次阅读 2012-06-05 14:50:05
    SendKeys有两个方法,分别为Send()和SendWait()(通常用SendWait)。 使用 SendKeys 将键击和组合键击发送到活动应用程序。此类无法实例化。若要发送一个键击给某个类并立即继续程序流,请使用 Send。若要等待...
  • sendfile

    千次阅读 2013-10-12 09:55:17
    在apache,nginx,lighttpd等web服务器当中,都有一项sendfile相关的配置,在一些网上的资料都有谈到sendfile会提升文件传输性能,那sendfile到底是什么呢?它的原理又是如何呢?  在传统的文件传输里面(read/...
  • flask send_file&send_from_directory

    千次阅读 2017-12-28 13:11:46
    flask.send_file(filename_or_fp, mimetype=None, as_attachment=False, attachment_filename=None, add_etags=True, cache_timeout=None, conditional=False, last_modified=None) 参数 说明 filename_or_fp ...
  • nodejs res.end和res.send 区别

    万次阅读 2017-04-12 16:21:39
    但是 如果 服务器端有数据返回到客户端 这个时候必须用res.send ,不能用 res.end(会报错) 例子: var express = require('express'); var app = express(); var mysql = require('mysql'); var conn...
  • 键盘钩子无法监控 SendKeys.Send 函数。keybd_event 的函数却可以
  • git send-email

    2020-05-29 09:12:21
    send multiple patches: https://stackoverflow.com/questions/14075445/how-to-generate-separate-patch-files-for-many-local-commits-and-send-them-with send kernel patch: ...
  • send 和recv详解

    万次阅读 2018-08-29 12:19:19
    int send( SOCKET s, const char FAR *buf, int len, int flags );  不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。 客户程序一般用send函数向服务器发送请求,而服务器则通常用send...
  • 在Win10系统下启动VS2015,运行以下代码时出错,显示System.Windows.Forms.SendKeys.Send拒绝访问,估计是权限问题,请问该怎么处理呢? if (subscripti < str.Length) { System.Windows.Forms.SendKeys.Send(@...
  • sendfile函数

    千次阅读 2017-05-12 15:53:58
    sendfile函数: 函数原型:  #include  ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count); sendfile在两个文件描述符之间直接传输数据(完全在内核中操作),从而避免了内核缓冲...
  • express的sendfile与send方法

    千次阅读 2016-01-25 23:09:09
    sendfile:发送文件,如果将一个html的网页移到node工程,可以用此方法。 首先将html页面放到public下(统一习惯,其实放到什么地方都可以实现)。 例如想在帮订餐页面点击帮订餐跳转到订餐页面 帮订餐: &...
  • 一个简单的Sendkeys程序,环境是win7 .net 4.5 贴一段发送的代码 Process[] pcs = Process.GetProcesses(); //获取进程数组 foreach (Process p in pcs) { try { //module = p.MainModule; if ((p.MainModule....
  • Socket中的send函数

    万次阅读 2019-06-17 16:46:10
    send()函数: 函数原型:int send(SOCKET s,const char *buff,int len,int flag); 不论是客户端还是服务端都用send函数来向TCP发送连接的另一端发送数据。 客户端一般用send函数向服务器发送请求,服务器用send发送...
  • Tk send

    2011-12-16 08:49:27
    send is a Tk command used to execute a command in a different application. This send communication mechanism is limited to applications running on one display. Multiple screens on one workstation ...
  • send函数阻塞

    千次阅读 2017-09-05 20:26:34
    以下内容转载时请注明出处。... tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不... send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送就返回.但由于
  • C# SendKeys.Send

    千次阅读 2010-06-04 23:53:00
    <br />语法 <br />SendKeys string[, wait] <br />SendKeys 语句的语法具有以下几个命名参数: <br />部分 描述 string 必需的。字符串表达式,指定要发送的按键消息。 Wait ...
  • sendfile详解

    千次阅读 2016-06-21 09:37:58
    在apache,nginx,lighttpd等web服务器当中,都有一项sendfile相关的配置,在一些网上的资料都有谈到sendfile会提升文件传输性能,那sendfile到底是什么呢?它的原理又是如何呢? 在传统的文件传输里面(read...
  • 在微软的帮助文档中指出SendKeys.Send()是向活动应用程序发送击键。SendKeys.SendWait()是向活动应用程序发送给定的键,然后等待消息被处理。但是在使用多线程的时候,在副线程中使用SendKeys.Send()会抛出“Send...
  • import Copackage.Socket.SendData; SendData m_Socket = new SendData()
  • xmlHttp.send(null)与xmlHttp.send

    万次阅读 2016-01-22 11:30:06
    xmlhttp.open("post",url,true);   xmlhttp.send(url);  (2)用get的话一般就是:  xmlhttp.open("get",url,true);  xmlhttp.send(null);

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 224,763
精华内容 89,905
热门标签
关键字:

send