Hjälp med nätverks klass
Hej,
har suttit och pillat med en nätverksklass till ett framtida spel, har kollat en del på nätverkskod, men inte hittat någon bra färdig klass (enligt mig).
Så jag betämde mig för att skriva en egen och den fungerar nästan helt..
Koden ser för tillfället ut såhär (C#):
Server:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace ServerNetworking
{
public class ServerNetworking
{
private IPEndPoint ip;
private Socket socket;
private Socket client;
private IPEndPoint newclient;
private NetworkStream netStream;
private StreamReader netStreamReader;
private StreamWriter netStreamWriter;
private Thread netListen;
private String data;
private bool running;
public bool isPackage;
public ServerNetworking()
{
ip = new IPEndPoint(IPAddress.Any, 8000);
netListen = new Thread(NetListener);
running = true;
isPackage = false;
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try { socket.Bind(ip); }
catch (SocketException e) { }
socket.Listen(10);
client = socket.Accept();
newclient = (IPEndPoint)client.RemoteEndPoint;
netStream = new NetworkStream(client);
netStreamReader = new StreamReader(netStream);
netStreamWriter = new StreamWriter(netStream);
}
private void NetListener()
{
while (running)
{
data = netStreamReader.ReadLine();
isPackage = true;
}
}
public void CloseConnection()
{
running = false;
socket.Shutdown(SocketShutdown.Both);
netStreamReader.Close();
netStreamWriter.Close();
netStream.Close();
client.Close();
socket.Close();
}
public String GetPackage()
{
isPackage = false;
return data;
}
public void SendPackage(String sendData)
{
netStreamWriter.WriteLine(sendData);
netStreamWriter.Flush();
}
}
}
Client:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace ClientNetworking
{
public class ClientNetworking
{
private IPAddress host;
private IPEndPoint hostep;
private Socket socket;
private NetworkStream netStream;
private StreamReader netStreamReader;
private StreamWriter netStreamWriter;
private Thread netListen;
private String data;
private bool running;
public bool isPackage;
public ClientNetworking()
{
host = IPAddress.Parse("127.0.0.1");
hostep = new IPEndPoint(host, 8000);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
netListen = new Thread(NetListener);
running = true;
isPackage = false;
try { socket.Connect(hostep); }
catch (SocketException e) { }
netStream = new NetworkStream(socket);
netStreamReader = new StreamReader(netStream);
netStreamWriter = new StreamWriter(netStream);
netListen.Start();
}
private void NetListener()
{
while (running)
{
data = netStreamReader.ReadLine();
isPackage = true;
}
}
public void CloseConnection()
{
running = false;
socket.Shutdown(SocketShutdown.Both);
netStreamReader.Close();
netStreamWriter.Close();
netStream.Close();
socket.Close();
}
public String GetPackage()
{
isPackage = false;
return data;
}
public void SendPackage(String sendData)
{
netStreamWriter.WriteLine(sendData);
netStreamWriter.Flush();
}
}
}
Just nu kan clienten koppla upp sig mot servern och man kan skicka data från servern till clienten, men inte från clienten till servern..
Kan någon hjälpa mig att få till det sista skulle jag vara tacksam.
Tack på förhand, Torxx.
Torxx