VC# 2008 Express - Winsock Class
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MSWinsockLib;
namespace [NAMESPACE]
{
public class Socket
{
private Winsock TCPWinsock;
public Socket()
{
SocketCreate(-1);
}
public Socket(int Port)
{
SocketCreate(Port);
}
public void SocketCreate(int Port)
{
TCPWinsock = new Winsock();
TCPWinsock.Error += new DMSWinsockControlEvents_ErrorEventHandler(this.Error);
TCPWinsock.ConnectionRequest += new DMSWinsockControlEvents_ConnectionRequestEventHandler(this.ConnectionRequest);
TCPWinsock.DataArrival += new DMSWinsockControlEvents_DataArrivalEventHandler(this.DataArrival);
TCPWinsock.SendComplete += new DMSWinsockControlEvents_SendCompleteEventHandler(this.SendComplete);
TCPWinsock.SendProgress += new DMSWinsockControlEvents_SendProgressEventHandler(this.SendProgress);
if (Port != -1)
{
TCPWinsock.LocalPort = Port;
}
}
public void Listen()
{
if (TCPWinsock.State == 0)
{
TCPWinsock.Listen();
}
}
public void Connect(String IP, int Port)
{
if (TCPWinsock.State == 0)
{
TCPWinsock.RemoteHost = IP;
TCPWinsock.RemotePort = Port;
TCPWinsock.Connect(IP, Port);
}
}
public int State()
{
return TCPWinsock.State;
}
#region Winsock Event Handlers
public void Error(short Number, ref string Description, int Scode, string Source, string HelpFile, int HelpContext, ref bool CancelDisplay)
{
//Handle Error
}
public void ConnectionRequest(int requestID)
{
//Handle ConnectionRequest
}
public void DataArrival(int bytesTotal)
{
//Handle DataArrival
}
public void SendComplete()
{
//Handle SendComplete
}
public void SendProgress(int bytesSent, int bytesRemaining)
{
//Handle SendProgress
}
#endregion
}
}
Add Reference - COM "Microsoft Winsock Control 6.0"