SocketFlags.None不起作用 [英] SocketFlags.None doesnot work

查看:233
本文介绍了SocketFlags.None不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有关于通过套接字发送数据的问题。等待另一个

socket.send


// str = Encoding.ASCII.GetBytes(" hello");

socket.Send(str,0,str.Length,SocketFlags.None);


socket.Receive(strincome,0,socket.Available,Socket Flags.None ); //返回

向你问好


// str = Encoding.ASCII.GetBytes(" how_are_you");


socket.Send(str,0,str.Length,SocketFlags.None);


socket.Receive(strincome,0,socket.Available, Socket Flags.None); //返回

罚款


它像这样发送hellohow_are_you ,但这是错的,我怎么解决呢




提前谢谢

解决方案




简单来说,你必须发送一个终结符或者在发送字符串之前

发送你要发送的字节数。


欢呼,

-

Ignacio Machin,

ignacio。 machin AT dot.state.fl.us

佛罗里达州交通部

" Hasan O" <豪******** @ gmail.com>在消息中写道

新闻:uU ************** @ TK2MSFTNGP12.phx.gbl ...

我有问题关于通过套接字发送数据它等待另一个
socket.send

// str = Encoding.ASCII.GetBytes(" hello");

socket.Send(str,0 ,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); //返回
向你问好

// str = Encoding.ASCII.GetBytes(" how_are_you");

socket.Send (str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); //返回
罚款 ;

它像这样发送hellohow_are_you ,但这是错的,我该如何解决?

提前致谢



嗨伊格纳西奥,

没有这样的事情。当我按命令运行命令(调试)时,它正常工作



Ignacio Machin(.NET / C#MVP)" < ignacio.machin AT dot.state.fl.us>在消息新闻中写了

:uN ************* @ tk2msftngp13.phx.gbl ...



很简单,你必须发送一个终结符或者在发送字符串之前发送你要发送的字节数。

欢呼,

- -
Ignacio Machin,
ignacio.machin at dot.state.fl.us
佛罗里达州交通局

Hasan O <豪******** @ gmail.com>在消息中写道
新闻:uU ************** @ TK2MSFTNGP12.phx.gbl ...

我有关于发送数据的问题插座。它等待另一个
socket.send

// str = Encoding.ASCII.GetBytes(" hello");

socket.Send(str,0 ,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); //返回
向你问好

// str = Encoding.ASCII.GetBytes(" how_are_you");

socket.Send (str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); //返回
罚款 ;

它像这样发送hellohow_are_you ,但这是错的,我该如何解决?

提前致谢




那是因为你逐行踩?

socket.Send (str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); //返回
向你问好



使用socket.Available是个问题。如果执行过快,

在远程客户端有时间实现

发送任何内容之前,接收将被调用。因此socket.Available = 0.并且立即收到

返回而不实际接收任何签名。然后继续发送

下一位。


我的猜测是,这一切都发生得如此之快,以至于它看起来像一个字符串

在远程端。


-

Adam Clauss


" Hasan O" ; <豪******** @ gmail.com>在留言中写道

新闻:eT ************** @ TK2MSFTNGP11.phx.gbl ...嗨Ignacio,
没有这样的事情。当我按命令运行命令(调试)它
正常工作。

Ignacio Machin(.NET / C#MVP)" < ignacio.machin AT dot.state.fl.us>
在消息新闻中写道:uN ************* @ tk2msftngp13.phx.gbl ...



简单来说,你必须要么发送终结符,要么在发送字符串之前发送你要发送的字节数。

欢呼,

-
Ignacio Machin,
ignacio.machin AT dot.state.fl.us
佛罗里达州交通局

" ; Hasan O <豪******** @ gmail.com>在消息中写道
新闻:uU ************** @ TK2MSFTNGP12.phx.gbl ...

我有关于发送数据的问题插座。它等待
另一个socket.send

// str = Encoding.ASCII.GetBytes(" hello");

socket.Send(str,0 ,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); //返回
向你问好

// str = Encoding.ASCII.GetBytes(" how_are_you");

socket.Send (str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); //返回
罚款 ;

它像这样发送hellohow_are_you ,但这是错的,我该如何解决呢?

提前致谢





Hi , i have problem about sending data over socket . It waits for another
socket.send

// str = Encoding.ASCII.GetBytes("hello");

socket.Send(str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); // return
"hello to you "

// str =Encoding.ASCII.GetBytes( "how_are_you ");

socket.Send(str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None);// return
"fine"

it sends like this "hellohow_are_you" , but it is wrong , how can i solve it
?

thanks in advance

解决方案

Hi,

Simple, you have to either send a terminator or before sending the string
send the # of bytes you will send.

cheers,

--
Ignacio Machin,
ignacio.machin AT dot.state.fl.us
Florida Department Of Transportation
"Hasan O" <ho********@gmail.com> wrote in message
news:uU**************@TK2MSFTNGP12.phx.gbl...

Hi , i have problem about sending data over socket . It waits for another
socket.send

// str = Encoding.ASCII.GetBytes("hello");

socket.Send(str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); // return
"hello to you "

// str =Encoding.ASCII.GetBytes( "how_are_you ");

socket.Send(str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None);// return
"fine"

it sends like this "hellohow_are_you" , but it is wrong , how can i solve
it ?

thanks in advance



Hi Ignacio ,
there is no such thing . when i run it command by command ( debug ) it works
correctly .
"Ignacio Machin ( .NET/ C# MVP )" <ignacio.machin AT dot.state.fl.us> wrote
in message news:uN*************@tk2msftngp13.phx.gbl...

Hi,

Simple, you have to either send a terminator or before sending the string
send the # of bytes you will send.

cheers,

--
Ignacio Machin,
ignacio.machin AT dot.state.fl.us
Florida Department Of Transportation
"Hasan O" <ho********@gmail.com> wrote in message
news:uU**************@TK2MSFTNGP12.phx.gbl...

Hi , i have problem about sending data over socket . It waits for another
socket.send

// str = Encoding.ASCII.GetBytes("hello");

socket.Send(str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); // return
"hello to you "

// str =Encoding.ASCII.GetBytes( "how_are_you ");

socket.Send(str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None);// return
"fine"

it sends like this "hellohow_are_you" , but it is wrong , how can i solve
it ?

thanks in advance




Is that because you are stepping through line by line?

socket.Send(str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); // return
"hello to you "


That use of socket.Available is the problem. If execution goes too quickly,
the receive will get called before the remote client has time to actually
send anything. Thus socket.Available = 0. And the receive immediately
returns without actually receiving anythign. It then goes on to send the
next bit.

My guess is, this is all happening so fast that it all looks like one string
on the remote end.

--
Adam Clauss

"Hasan O" <ho********@gmail.com> wrote in message
news:eT**************@TK2MSFTNGP11.phx.gbl... Hi Ignacio ,
there is no such thing . when i run it command by command ( debug ) it
works correctly .
"Ignacio Machin ( .NET/ C# MVP )" <ignacio.machin AT dot.state.fl.us>
wrote in message news:uN*************@tk2msftngp13.phx.gbl...

Hi,

Simple, you have to either send a terminator or before sending the string
send the # of bytes you will send.

cheers,

--
Ignacio Machin,
ignacio.machin AT dot.state.fl.us
Florida Department Of Transportation
"Hasan O" <ho********@gmail.com> wrote in message
news:uU**************@TK2MSFTNGP12.phx.gbl...

Hi , i have problem about sending data over socket . It waits for
another socket.send

// str = Encoding.ASCII.GetBytes("hello");

socket.Send(str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None); // return
"hello to you "

// str =Encoding.ASCII.GetBytes( "how_are_you ");

socket.Send(str,0,str.Length,SocketFlags.None);

socket.Receive(strincome,0,socket.Available,Socket Flags.None);// return
"fine"

it sends like this "hellohow_are_you" , but it is wrong , how can i
solve it ?

thanks in advance





这篇关于SocketFlags.None不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆