[Mono-list] Fail to set socket send&receive timeout!

Li lis1306 at 21cn.com
Mon Dec 19 05:47:48 EST 2005


hello sir,
With your advice I update my redhat9 to fedral4(kernel 2.6.11), but the socket still can't be set timeout property. What is wrong with it? And I also have a problem with Process.GetProcesses(), it can't get all processes in current machine.
Would you do me a favor to help me again please? Thank you very much!
Here is the source code:

using System;
using System.Net.Sockets;
using System.Net;
using System.Runtime.InteropServices;
using System.IO;
using System.Diagnostics;
namespace CommTest
{
	class Class1
	{
		[STAThread]
		static void Main(string[] args)
		{
			//it can't work in fedral core 4(kernel 2.6.11),but works well in winXP
			Socket TCPSocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
			//following 2 functions cause a exception:non-block socket would block
			TCPSocket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.SendTimeout,1000);
			TCPSocket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReceiveTimeout,1000);
			
			IPAddress ConnIP=IPAddress.Parse("127.0.0.1");
			IPEndPoint SensorServer=new IPEndPoint(ConnIP,6000);
			TCPSocket.Bind(SensorServer);
			TCPSocket.Listen(1);
			Console.WriteLine("CommServ is listening...");
			Socket AcceptSocket=TCPSocket.Accept();//throw a exception:non-block socket would block
			Console.WriteLine("CommClient is accepted...");
			if(AcceptSocket.Connected)
			{
				byte[] RcvBuf=new byte[1024];
				AcceptSocket.Receive(RcvBuf);
				Process[] Ps=Process.GetProcesses();//It dosen't work, only get itself
				foreach(Process p in Ps)
				{
					Console.WriteLine(p.ProcessName);//only output itself, not all processes in current machine,Why?
				}
				AcceptSocket.Send(RcvBuf);
			}
			AcceptSocket.Close();
			TCPSocket.Close();
		}
	}
}

LiLing



More information about the Mono-list mailing list