1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using System;
- using System.Text;
- using System.IO;
- using System.Threading;
- using System.Net;
- using System.Net.Sockets;
- using System.Timers;
- using System.Reflection;
- using System.Collections;
- using System.Collections.Generic;
- using libsecondlife;
- using libsecondlife.Packets;
- namespace OpenSim.Servers
- {
- public class UDPServerBase
- {
- public Socket Server;
- protected IPEndPoint ServerIncoming;
- protected byte[] RecvBuffer = new byte[4096];
- protected byte[] ZeroBuffer = new byte[8192];
- protected IPEndPoint ipeSender;
- protected EndPoint epSender;
- protected AsyncCallback ReceivedData;
- protected int listenPort;
- public UDPServerBase(int port)
- {
- listenPort = port;
- }
- protected virtual void OnReceivedData(IAsyncResult result)
- {
- ipeSender = new IPEndPoint(IPAddress.Any, 0);
- epSender = (EndPoint)ipeSender;
- Packet packet = null;
- int numBytes = Server.EndReceiveFrom(result, ref epSender);
- int packetEnd = numBytes - 1;
- packet = Packet.BuildPacket(RecvBuffer, ref packetEnd, ZeroBuffer);
- Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
- }
- protected virtual void AddNewClient(Packet packet)
- {
- }
- public virtual void ServerListener()
- {
- ServerIncoming = new IPEndPoint(IPAddress.Any, listenPort);
- Server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
- Server.Bind(ServerIncoming);
- ipeSender = new IPEndPoint(IPAddress.Any, 0);
- epSender = (EndPoint)ipeSender;
- ReceivedData = new AsyncCallback(this.OnReceivedData);
- Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
- }
- public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
- {
- }
- }
- }
|