本文整理汇总了C#中Microsoft.SPOT.Platform.Tests.SocketPair类的典型用法代码示例。如果您正苦于以下问题:C# SocketPair类的具体用法?C# SocketPair怎么用?C# SocketPair使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
SocketPair类属于Microsoft.SPOT.Platform.Tests命名空间,在下文中一共展示了SocketPair类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SocketsEnums8_SocketFlags_Peek
public MFTestResults SocketsEnums8_SocketFlags_Peek()
{
/// <summary>
/// 1. Sends TCP data using the Peek flag
/// 2. Verifies that the correct exception is thrown
/// Further testing would require harness alteration
/// </summary>
///
bool isAnyCatch = false;
try
{
try
{
SocketPair testSockets = new SocketPair(ProtocolType.Tcp, SocketType.Stream);
testSockets.Startup(0, 0);
testSockets.socketServer.Listen(1);
testSockets.socketClient.Connect(testSockets.epServer);
int cBytes = testSockets.socketClient.Send(testSockets.bufSend);
using (Socket sock = testSockets.socketServer.Accept())
{
cBytes = sock.Receive(testSockets.bufReceive, SocketFlags.Peek);
Log.Comment("Checking Peek data");
testSockets.AssertDataReceived(cBytes);
int cBytesAgain = sock.Receive(testSockets.bufReceive);
if(cBytesAgain < cBytes)
throw new Exception(
"Peek returns more bytes than the successive read" );
}
testSockets.AssertDataReceived(cBytes);
testSockets.TearDown();
testSockets = null;
}
catch (SocketException)
{
isAnyCatch = true;
}
}
catch (System.Exception e)
{
isAnyCatch = true;
Log.Comment("Incorrect exception caught: " + e.Message);
}
if (!isAnyCatch)
{
Log.Comment("No exception caught");
}
return (isAnyCatch ? MFTestResults.Fail : MFTestResults.Pass);
}
示例2: SocketsEnums12_SON_AcceptConnection
public MFTestResults SocketsEnums12_SON_AcceptConnection()
{
/// <summary>
/// 1. Starts a server socket listening for TCP
/// 2. Verifies that AcceptConnection is correct before and after
/// </summary>
///
bool testResult = true;
try
{
byte[] buf = new byte[4];
int number;
SocketPair testSockets = new SocketPair(ProtocolType.Tcp, SocketType.Stream);
testSockets.Startup(0, 0);
testSockets.socketServer.GetSocketOption(
SocketOptionLevel.Socket, SocketOptionName.AcceptConnection, buf );
number = (int)buf[0] + (int)(buf[1]<<8) + (int)(buf[2]<<16) + (int)(buf[3]<<24);
testResult &= (number == 0);
testSockets.socketServer.Listen(1);
testSockets.socketServer.GetSocketOption(
SocketOptionLevel.Socket, SocketOptionName.AcceptConnection, buf );
number = (int)buf[0] + (int)(buf[1]<<8) + (int)(buf[2]<<16) + (int)(buf[3]<<24);
testResult &= (number != 0);
testSockets.TearDown();
testSockets = null;
}
catch (System.Exception e)
{
Log.Comment("Caught exception: " + e.Message);
if (e.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " + ((SocketException)e).ErrorCode);
testResult = false;
}
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}
示例3: SocketTest5_BasicRAW
public MFTestResults SocketTest5_BasicRAW()
{
/// <summary>
/// 1. Starts a server socket listening for Raw
/// 2. Starts a client socket connected to the server
/// 3. Verifies that data can be correctly sent and recieved
/// </summary>
///
bool testResult = true;
SocketPair testSockets = null;
try
{
testSockets = new SocketPair(ProtocolType.Raw, SocketType.Raw);
testSockets.Startup(0, 0);
testSockets.socketServer.Listen(1);
testSockets.socketClient.Connect(testSockets.epServer);
int cBytes = testSockets.socketClient.Send(testSockets.bufSend);
if (cBytes != testSockets.bufSend.Length)
throw new Exception("Send failed, wrong length");
using (Socket sock = testSockets.socketServer.Accept())
{
if (sock.LocalEndPoint == null)
throw new Exception("LocalEndPoint is null");
//Fix?
if (testSockets.socketServer.LocalEndPoint.ToString() !=
sock.LocalEndPoint.ToString())
throw new Exception("LocalEndPoint is incorrect");
if (sock.RemoteEndPoint == null)
throw new Exception("RemoteEndPoint is null");
if (testSockets.socketClient.LocalEndPoint.ToString() !=
sock.RemoteEndPoint.ToString())
throw new Exception("RemoteEndPoint is incorrect");
cBytes = sock.Available;
if (cBytes != testSockets.bufSend.Length)
throw new Exception("Send failed, wrong length");
cBytes = sock.Receive(testSockets.bufReceive);
}
testSockets.AssertDataReceived(cBytes);
}
catch (SocketException e)
{
Log.Comment("Caught exception: " + e.Message);
Log.Comment("ErrorCode: " + ((SocketException)e).ErrorCode);
}
catch (Exception e)
{
Log.Comment("Caught exception: " + e.Message);
if (e.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " + ((SocketException)e).ErrorCode);
testResult = false;
}
finally
{
if (testSockets != null)
{
testSockets.TearDown();
testSockets = null;
}
}
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}
示例4: SocketTest2_BasicUDP
public MFTestResults SocketTest2_BasicUDP()
{
/// <summary>
/// 1. Starts a server socket listening for UDP
/// 2. Starts a client socket sending UDP packets
/// 3. Verifies that data can be correctly sent and recieved
/// </summary>
///
bool testResult = true;
SocketPair testSockets = null;
try
{
testSockets = new SocketPair(ProtocolType.Udp, SocketType.Dgram);
Log.Comment("Testing with port 0");
testSockets.Startup(0, 0);
int cBytes = testSockets.socketClient.SendTo(
testSockets.bufSend, testSockets.epServer);
if (cBytes != testSockets.bufSend.Length)
throw new Exception("Send failed, wrong length");
EndPoint epFrom = new IPEndPoint(IPAddress.Any, 0);
cBytes = testSockets.socketServer.ReceiveFrom(testSockets.bufReceive, ref epFrom);
if (testSockets.epClient.Address.ToString() != ((IPEndPoint)epFrom).Address.ToString())
throw new Exception("Bad address");
}
catch (SocketException e)
{
if (e.ErrorCode == 10047)
{
Log.Comment("Address family not supported by protocol family.");
Log.Comment("This exception is thrown by the device driver that doesnt' implement Loopback for UDP");
}
else
{
testResult = false;
Log.Comment("Fail for any other error codes that we don't know about");
}
}
catch (Exception e)
{
Log.Comment("Caught exception: " + e.Message);
if (e.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " + ((SocketException)e).ErrorCode);
testResult = false;
}
finally
{
if (testSockets != null)
{
testSockets.TearDown();
testSockets = null;
}
}
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}
示例5: SocketTest13_DPWSOptions
public MFTestResults SocketTest13_DPWSOptions()
{
/// <summary>
/// 1. Starts a server socket listening for UDP
/// 2. Starts a client socket sending UDP packets
/// 3. Verifies that data can be correctly sent and recieved
/// </summary>
///
//don't run on the emulator since this isn't supported
if (Microsoft.SPOT.Hardware.SystemInfo.SystemID.SKU == 3)
return MFTestResults.Skip;
bool testResult = true;
try
{
SocketPair testSockets = new SocketPair(ProtocolType.Udp, SocketType.Dgram);
NetworkInterface[] inter = NetworkInterface.GetAllNetworkInterfaces();
IPAddress localAddress = SocketTools.ParseAddress(inter[0].IPAddress);
try
{
byte[] local = localAddress.GetAddressBytes();
byte[] multicastOpt = new byte[] { 224, 100, 1, 1,
local[0], local[1], local[2], local[3]};
testSockets.socketClient.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.AddMembership, multicastOpt);
}
catch (SocketException se)
{
if (se.ErrorCode != (int)SocketError.ProtocolOption)
{
Log.Comment("Caught exception: " + se.Message);
if (se.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " + se.ErrorCode);
testResult = false;
}
}
catch (Exception e)
{
Log.Comment("Caught exception: " + e.Message);
if (e.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " + ((SocketException)e).ErrorCode);
testResult = false;
}
try
{
testSockets.socketClient.SetSocketOption(SocketOptionLevel.Socket,
SocketOptionName.ReuseAddress, true);
}
catch (SocketException se)
{
if (se.ErrorCode != (int)SocketError.ProtocolOption)
{
Log.Comment("Caught exception: " + se.Message);
if (se.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " + se.ErrorCode);
testResult = false;
}
}
catch (Exception e)
{
Log.Comment("Caught exception: " + e.Message);
if (e.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " + ((SocketException)e).ErrorCode);
testResult = false;
}
try
{
byte [] bytes = localAddress.GetAddressBytes();
// given the address change it to what SetSocketOption needs
testSockets.socketClient.SetSocketOption(
SocketOptionLevel.IP,
SocketOptionName.MulticastInterface,
bytes);
}
catch (SocketException se)
{
if (se.ErrorCode != (int)SocketError.ProtocolOption)
{
Log.Comment("Caught exception: " + se.Message);
if (se.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " + se.ErrorCode);
testResult = false;
}
}
catch (Exception e)
{
Log.Comment("Caught exception: " + e.Message);
if (e.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " + ((SocketException)e).ErrorCode);
testResult = false;
}
try
{
testSockets.socketClient.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.DontFragment, true);
//.........这里部分代码省略.........
示例6: SocketTest10_TCPPoll
public MFTestResults SocketTest10_TCPPoll()
{
/// <summary>
/// 1. Starts a server socket listening for TCP
/// 2. Starts a client socket connected to the server
/// 3. Transfers some data
/// 4. Verifies that Poll returns correct results after each individual
/// function is called.
/// </summary>
///
bool testResult = true;
try
{
SocketPair testSockets = new SocketPair(ProtocolType.Tcp, SocketType.Stream);
Log.Comment("Testing with port 0");
testSockets.Startup(0, 0);
testSockets.socketServer.Listen(1);
Log.Comment("Listen called");
testSockets.socketClient.Connect(testSockets.epServer);
Log.Comment("Connect called");
int cBytes = testSockets.socketClient.Send(testSockets.bufSend);
Log.Comment("Send called");
testResult = (testSockets.socketClient.Poll(1000, SelectMode.SelectWrite) == true);
testResult = (testSockets.socketServer.Poll(1000, SelectMode.SelectRead) == true);
using (Socket sock = testSockets.socketServer.Accept())
{
Log.Comment("Accept called");
testResult = (testSockets.socketClient.Poll(1000, SelectMode.SelectWrite) == true);
cBytes = sock.Available;
Log.Comment("Available bytes assigned");
testResult = (testSockets.socketClient.Poll(1000, SelectMode.SelectWrite) == true);
cBytes = sock.Receive(testSockets.bufReceive);
Log.Comment("Recieve called");
testResult = (testSockets.socketClient.Poll(1000, SelectMode.SelectWrite) == true);
}
testSockets.AssertDataReceived(cBytes);
testSockets.TearDown();
testSockets = null;
}
catch (Exception e)
{
Log.Comment("Caught exception: " + e.Message);
if (e.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " +
((SocketException)e).ErrorCode); testResult = false;
}
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}
示例7: SocketsEnums11_SocketOptionName_Debug_UDP
public MFTestResults SocketsEnums11_SocketOptionName_Debug_UDP()
{
//don't run this on emulator since its not supported.
if (Microsoft.SPOT.Hardware.SystemInfo.SystemID.SKU == 3)
return MFTestResults.Skip;
SocketPair testSockets = new SocketPair(ProtocolType.Udp, SocketType.Dgram);
Log.Comment("Testing Debug with UDP");
bool testResult = TestSocketOption(testSockets, SocketOptionLevel.Socket,
SocketOptionName.Debug, boolData, false);
testSockets.TearDown();
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}
示例8: SocketsEnums11_SocketOptionName_AddSourceMembership_UDP
public MFTestResults SocketsEnums11_SocketOptionName_AddSourceMembership_UDP()
{
//don't run this on emulator since its not supported.
if (Microsoft.SPOT.Hardware.SystemInfo.SystemID.SKU == 3)
return MFTestResults.Skip;
NetworkInterface[] inter = NetworkInterface.GetAllNetworkInterfaces();
IPAddress localAddress = SocketTools.ParseAddress(inter[0].IPAddress);
byte[] local = localAddress.GetAddressBytes();
byte[] multicastOpt = new byte[] { 224, 100, 1, 1,
local[0], local[1], local[2], local[3]};
SocketPair testSockets = new SocketPair(ProtocolType.Udp, SocketType.Dgram);
Log.Comment("Testing AddSourceMembership with UDP");
bool testResult = TestSocketOption(testSockets, SocketOptionLevel.IP,
SocketOptionName.AddSourceMembership, multicastOpt, false);
testSockets.TearDown();
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}
示例9: SocketsEnums11_SocketOptionName_DropSourceMembership_TCP
public MFTestResults SocketsEnums11_SocketOptionName_DropSourceMembership_TCP()
{
NetworkInterface[] inter = NetworkInterface.GetAllNetworkInterfaces();
IPAddress localAddress = SocketTools.ParseAddress(inter[0].IPAddress);
byte[] local = localAddress.GetAddressBytes();
byte[] multicastOpt = new byte[] { 224, 100, 1, 1,
local[0], local[1], local[2], local[3]};
SocketPair testSockets = new SocketPair(ProtocolType.Tcp, SocketType.Stream);
Log.Comment("Testing DropSourceMembership with TCP");
bool testResult = TestSocketOption(testSockets, SocketOptionLevel.IP,
SocketOptionName.DropSourceMembership, multicastOpt, false);
testSockets.TearDown();
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}
示例10: SocketsEnums11_SocketOptionName_DontFragment_TCP
public MFTestResults SocketsEnums11_SocketOptionName_DontFragment_TCP()
{
SocketPair testSockets = new SocketPair(ProtocolType.Tcp, SocketType.Stream);
Log.Comment("Testing DontFragment with TCP");
bool testResult = TestSocketOption(testSockets, SocketOptionLevel.IP,
SocketOptionName.DontFragment, boolData, true);
testSockets.TearDown();
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}
示例11: TestSocketOptionSetOnly
private bool TestSocketOptionSetOnly(SocketPair testSockets,
SocketOptionLevel optionLevel,
SocketOptionName optionName, Object data, bool isSupported)
{
try
{
Log.Comment("Option is only valid for Set");
string typeStr = data.GetType().ToString();
switch (typeStr)
{
case "System.Boolean":
testSockets.socketClient.SetSocketOption(optionLevel,
optionName, (bool)data);
break;
case "System.Int32":
testSockets.socketClient.SetSocketOption(optionLevel,
optionName, (int)data);
break;
case "System.Byte[]":
testSockets.socketClient.SetSocketOption(optionLevel,
optionName, (byte[])data);
break;
default:
throw new Exception("Test Error, cannot set socket option with that type");
}
}
catch (Exception e)
{
Log.Comment("Caught exception: " + e.Message);
if (e.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
{
Log.Comment("ErrorCode: " + ((SocketException)e).ErrorCode);
if (!isSupported && (((SocketException)e).ErrorCode == (int)SocketError.ProtocolOption ||
((SocketException)e).ErrorCode == (int)SocketError.AddressFamilyNotSupported ||
((SocketException)e).ErrorCode == (int)SocketError.InvalidArgument ||
((SocketException)e).ErrorCode == (int)SocketError.AddressNotAvailable))
{
Log.Comment("Non-supported option graceful fail");
return true;
}
else if (isSupported && ((SocketException)e).ErrorCode == (int)SocketError.ProtocolOption)
{
Log.Comment(
"Supported option graceful fail, this option needs implementation");
return true;
}
else if (!isSupported && (((SocketException)e).ErrorCode == (int)SocketError.ProtocolOption ||
((SocketException)e).ErrorCode == (int)SocketError.InvalidArgument ||
((SocketException)e).ErrorCode == (int)SocketError.AddressNotAvailable))
{
Log.Comment("Non-supported option failed with bad errorcode, " +
"should be 10042 or 10022");
}
}
Log.Comment("SocketOption FAILED");
return false;
}
if (!isSupported)
{
Log.Comment("This option is not supported. Should throw an exception");
return true;
}
Log.Comment("SocketOption succeeded");
return true;
}
示例12: TestSocketOption
private bool TestSocketOption(SocketPair testSockets, SocketOptionLevel optionLevel,
SocketOptionName optionName, Object data, bool isSupported)
{
try
{
string typeStr = data.GetType().ToString();
switch (typeStr)
{
case "System.Boolean":
Log.Comment("First set");
testSockets.socketClient.SetSocketOption(optionLevel, optionName,
(bool)data);
Log.Comment("First get");
if (((int)testSockets.socketClient.GetSocketOption(optionLevel,
optionName) == 1) != (bool)data)
throw new Exception("Got wrong data after first Set");
Log.Comment("Second set");
testSockets.socketClient.SetSocketOption(optionLevel, optionName,
!(bool)data);
Log.Comment("Second get");
if (((int)testSockets.socketClient.GetSocketOption(optionLevel,
optionName) == 1) != !(bool)data)
throw new Exception("Got wrong data after second Set");
break;
case "System.Int32":
Log.Comment("First set");
testSockets.socketClient.SetSocketOption(optionLevel, optionName,
(int)data);
Log.Comment("First get");
if ((int)testSockets.socketClient.GetSocketOption(optionLevel,
optionName) != (int)data)
throw new Exception("Got wrong data after first Set");
Log.Comment("Second set");
testSockets.socketClient.SetSocketOption(optionLevel, optionName,
(int)data - 1);
Log.Comment("Second get");
if ((int)testSockets.socketClient.GetSocketOption(optionLevel,
optionName) != (int)data - 1)
throw new Exception("Got wrong data after second Set");
break;
case "System.Byte[]":
Log.Comment("First set");
byte[] result = new byte[((byte[])data).Length];
testSockets.socketClient.SetSocketOption(optionLevel, optionName,
(byte[])data);
testSockets.socketClient.GetSocketOption(optionLevel, optionName,
result) ;
Log.Comment("First get");
if (!SocketTools.ArrayEquals(result, (byte[])data))
throw new Exception("Got wrong data after first Set");
//Decrement first byte of data
((byte[])data)[0]--;
Log.Comment("Second set");
testSockets.socketClient.SetSocketOption(optionLevel, optionName,
(byte[])data);
testSockets.socketClient.GetSocketOption(optionLevel, optionName,
result);
Log.Comment("Second get");
if (!SocketTools.ArrayEquals(result, (byte[])data))
throw new Exception("Got wrong data after second Set");
break;
default:
throw new Exception("Test Error, cannot set socket option with that type");
}
}
catch (Exception e)
{
Log.Comment("Caught exception: " + e.Message);
if (e.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
{
Log.Comment("ErrorCode: " + ((SocketException)e).ErrorCode);
if (!isSupported && (((SocketException)e).ErrorCode == (int)SocketError.ProtocolOption ||
((SocketException)e).ErrorCode == (int)SocketError.AddressFamilyNotSupported ||
((SocketException)e).ErrorCode == (int)SocketError.InvalidArgument ||
((SocketException)e).ErrorCode == (int)SocketError.AddressNotAvailable))
{
Log.Comment("Non-supported option graceful fail");
return true;
}
else if (isSupported && ((SocketException)e).ErrorCode == (int)SocketError.ProtocolOption)
{
Log.Comment(
"Supported option graceful fail, this option needs implementation");
return true;
}
else if (!isSupported && (((SocketException)e).ErrorCode == (int)SocketError.ProtocolOption ||
((SocketException)e).ErrorCode == (int)SocketError.InvalidArgument ||
((SocketException)e).ErrorCode == (int)SocketError.AddressNotAvailable))
{
Log.Comment("Non-supported option failed with bad errorcode, " +
"should be 10042 or 10022");
}
}
Log.Comment("SocketOption FAILED");
return false;
}
if (!isSupported)
//.........这里部分代码省略.........
示例13: SocketsEnums15_SON_SendBuffer
public MFTestResults SocketsEnums15_SON_SendBuffer()
{
/// <summary>
/// 1. Sends a message of size SendBuffer
/// 2. Verifies that it transferred correctly
/// 1. Sends a message of size SendBuffer+1
/// 2. Verifies that the correct exception is thrown
/// </summary>
///
bool testResult = true;
byte[] buf = new byte[4];
int number;
try
{
int sendBufferValue1 = 1024;
int sendBufferValue2 = 512;
SocketPair testSockets = new SocketPair(ProtocolType.Tcp, SocketType.Stream);
testSockets.socketClient.SetSocketOption(
SocketOptionLevel.Socket, SocketOptionName.SendBuffer, sendBufferValue1);
testSockets.socketClient.GetSocketOption(
SocketOptionLevel.Socket, SocketOptionName.SendBuffer, buf);
number = (int)buf[0] + (int)(buf[1]<<8) + (int)(buf[2]<<16) + (int)(buf[3]<<24);
if(number != sendBufferValue1)
throw new System.Exception("ReceiveBuffer option was not set correctly");
testSockets.socketClient.SetSocketOption(
SocketOptionLevel.Socket, SocketOptionName.SendBuffer, sendBufferValue2);
testSockets.socketClient.GetSocketOption(
SocketOptionLevel.Socket, SocketOptionName.SendBuffer, buf);
number = (int)buf[0] + (int)(buf[1]<<8) + (int)(buf[2]<<16) + (int)(buf[3]<<24);
if(number != sendBufferValue2)
throw new System.Exception("ReceiveBuffer option was not set correctly");
Log.Comment("ReceiveBuffer " + number.ToString() );
testSockets.Startup(0, 0);
testSockets.bufSend = new byte[number];
testSockets.bufReceive = new byte[number];
testSockets.socketServer.Listen(1);
testSockets.socketClient.Connect(testSockets.epServer);
int cBytes = testSockets.socketClient.Send(testSockets.bufSend);
if (cBytes != testSockets.bufSend.Length)
throw new System.Exception("Send failed, wrong length");
using (Socket sock = testSockets.socketServer.Accept())
{
if (sock.LocalEndPoint == null)
throw new System.Exception("LocalEndPoint is null");
if (testSockets.socketServer.LocalEndPoint.ToString() !=
sock.LocalEndPoint.ToString())
throw new System.Exception("LocalEndPoint is incorrect");
if (sock.RemoteEndPoint == null)
throw new System.Exception("RemoteEndPoint is null");
if (testSockets.socketClient.LocalEndPoint.ToString() !=
sock.RemoteEndPoint.ToString())
throw new System.Exception("RemoteEndPoint is incorrect");
//wait a second to ensure the socket is available
System.Threading.Thread.Sleep(1000);
cBytes = sock.Available;
if (cBytes != testSockets.bufSend.Length)
throw new System.Exception("Send failed, wrong length");
cBytes = sock.Receive(testSockets.bufReceive);
}
testSockets.AssertDataReceived(cBytes);
testSockets.TearDown();
testSockets = null;
}
catch (System.Exception e)
{
Log.Comment("Caught exception: " + e.Message);
if (e.GetType() == Type.GetType("System.Net.Sockets.SocketException"))
Log.Comment("ErrorCode: " + ((SocketException)e).ErrorCode);
testResult = false;
}
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}
示例14: SocketsEnums13_SON_Broadcast
public MFTestResults SocketsEnums13_SON_Broadcast()
{
/// <summary>
/// 1. Starts a UDP client broadcasting
/// 2. Verifies that Broadcast is correct before and after
/// </summary>
///
bool testResult = false;
try
{
SocketPair testSockets1 = new SocketPair(ProtocolType.Udp, SocketType.Dgram);
int clientPort1 = SocketTools.nextPort;
int serverPort1 = SocketTools.nextPort;
int tempPort1 = SocketTools.nextPort;
IPEndPoint epBroadcast1 = new IPEndPoint(
SocketTools.DottedDecimalToIp(
(byte)255, (byte)255, (byte)255, (byte)255), tempPort1);
Log.Comment("SetSocketOption socket, broadcast, false");
testSockets1.socketClient.SetSocketOption(
SocketOptionLevel.Socket, SocketOptionName.Broadcast, false);
try
{
Log.Comment("SendTo epBroadcast1");
testSockets1.socketClient.SendTo(
new byte[] { 0x01, 0x02, 0x03 }, epBroadcast1);
Log.Comment("Error, this should never get displayed. An exception should have been thrown.");
}
catch (SocketException e)
{
Log.Comment("Error code: " + e.ErrorCode);
Log.Comment("Correctly threw exception trying to broadcast from socket that has had broadcast turned off.");
testResult = true;
}
catch (Exception e)
{
Log.Comment("Incorrect exception thrown: " + e.Message);
}
finally
{
Log.Comment("Tear down the socket");
testSockets1.TearDown();
}
//--//
SocketPair testSockets2 = new SocketPair(ProtocolType.Udp, SocketType.Dgram);
int clientPort2 = SocketTools.nextPort;
int serverPort2 = SocketTools.nextPort;
int tempPort2 = SocketTools.nextPort;
IPEndPoint epBroadcast2 = new IPEndPoint(
SocketTools.DottedDecimalToIp(
(byte)255, (byte)255, (byte)255, (byte)255), tempPort2);
Log.Comment("SetSocketOption socket, broadcast, true");
testSockets2.socketClient.SetSocketOption(
SocketOptionLevel.Socket,SocketOptionName.Broadcast, true);
try
{
Log.Comment("SendTo epBroadcast1");
testSockets2.socketClient.SendTo(
new byte[] { 0x01, 0x02, 0x03 }, epBroadcast2);
}
catch (SocketException e)
{
Log.Comment("Error code: " + e.ErrorCode);
if (e.ErrorCode == 10047)
{
Log.Comment("Some drivers do not like this option being set. Allow them to throw this exception");
testResult &= true;
}
else
{
Log.Comment("Incorrectly threw exception trying to broadcast from socket that has had broadcast turned on.");
testResult = false;
}
}
catch (Exception e)
{
Log.Comment("Incorrect exception thrown: " + e.Message);
}
finally
{
Log.Comment("Tear down the socket");
testSockets2.TearDown();
}
}
catch (SocketException e)
{
Log.Comment("SocketException ErrorCode: " + e.ErrorCode);
if (e.ErrorCode == 10047)
{
Log.Comment("Address family not supported by protocol family.");
Log.Comment("This exception is thrown by the device driver that doesnt' implement Loopback for UDP");
}
else
{
Log.Comment("Fail for any other error codes that we don't know about");
testResult = false;
//.........这里部分代码省略.........
示例15: SocketsEnums11_SocketOptionName_UseLoopback_TCP
public MFTestResults SocketsEnums11_SocketOptionName_UseLoopback_TCP()
{
SocketPair testSockets = new SocketPair(ProtocolType.Tcp, SocketType.Stream);
Log.Comment("Testing UseLoopback with TCP");
bool testResult = TestSocketOption(testSockets, SocketOptionLevel.IP,
SocketOptionName.UseLoopback, boolData, false);
testSockets.TearDown();
return (testResult ? MFTestResults.Pass : MFTestResults.Fail);
}