sockets em C#

leinad

Power Member
sou iniciante em C# e tenho k fazer um trabalho de sockets, que consistem num servidor e num cliente (inicialmente).

O trabalho consiste em o servidor saber o estado de alerta (alerta amarelo, alerta vermelo, da proteção civil) do cliente, o cliente envia a saturação do solo e a pluviosidade em 2 pacotes separados
e apresenta-os numa txt do servidor, tenho que pegar nesses valoes e através de uma forma consiguir saber o estado de alerta...



o que esta a apresentrar na txt neste momento é: 1020
o 10 refere-se á saturação do solo e 20 refere-se á pluviosidade. Qual é a propriedade da txt ou como faço para ficar o 10 numa linha e 20 na linha a seguir? a txt está definida como multiline.
 
Boas!

De C# não percebo nada..., no entanto ando agora com um trabalho na faculdade em que preciso de C# e encontrei este artigo, pode ser que te dê jeito na elaboração do teu trabalho.

abraços, HecKel
 
...
o que esta a apresentrar na txt neste momento é: 1020
o 10 refere-se á saturação do solo e 20 refere-se á pluviosidade. Qual é a propriedade da txt ou como faço para ficar o 10 numa linha e 20 na linha a seguir? a txt está definida como multiline...

Código:
txt.Text = "10\r\n20";
 
alguém pode dizer o que está mal neste código de c#?


using System;
using System.Net;
using System.Net.Sockets;
using System.Text;


public class Servidor
{
public static void Main()
{
//int recv;
int iPLuC;
int iSatC;
double fAlerta;
byte[] data = new byte[1024];
byte[] data2 = new byte[1024];
IPEndPoint ipep = new IPEndPoint(IPAddress.Any,8221);

Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);


newsock.Bind(ipep);
newsock.Listen(10);
Console.WriteLine("Aguardando ligacao de um cliente...");
Socket client = newsock.Accept();
IPEndPoint clientep =(IPEndPoint)client.RemoteEndPoint;
Console.WriteLine("Conecado com {0} e porto {1}", clientep.Address, clientep.Port);


string welcome = "Ligacao estabelecida com sucesso!";
data = Encoding.ASCII.GetBytes(welcome);
client.Send(data, data.Length, SocketFlags.None);

while (true)
{
data = new byte[1024];
iPLuC = newsock.Read(data, 0, data.Length);

Console.WriteLine("Pluviosidade actual:[{0}].", Encoding.ASCII.GetString(data, 0, iPLuC));
newsock.Write(data, 0, iPLuC);


data2 = new byte[1024];
iSatC = newsock.Read(data2, 0, data2.Length);

Console.WriteLine("Saturação actual:[{0}].", Encoding.ASCII.GetString(data2, 0, iSatC));
newsock.Write(data2, 0, iSatC);



fAlerta=((iPLuC*iSatC*1.5)+(0)); //msg de do estado de alerta

if (fAlerta <=10) Console.WriteLine("Esta cidade encontra-se em alerta VERDE");

if (fAlerta>10 | fAlerta<=30) Console.WriteLine("Esta cidade encontra-se em alerta AMARELO");

if (fAlerta>30 | fAlerta<=60) Console.WriteLine("Esta cidade encontra-se em alerta LARANJA");

if (fAlerta > 60) Console.WriteLine("Esta cidade encontra-se em alerta VERMELHO");


// if (recv == 0)
// break;

//Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv)); //envia para o cliente
/*client.Send("Sucesso!", SocketFlags.None); envia para o cliente */
client.Send(Encoding.ASCII.GetBytes("Sucesso!"));
}
Console.WriteLine("Disconectado from {0}", clientep.Address);

client.Close();
newsock.Close();
}
}




tão a dar as seguintes mensagens de erro...

'System.Net.Sockets.Socket' does not contain a definition for "write" e

'System.Net.Sockets.Socket' does not contain a definition for "read"
 
sockets...

servidor..

Código:
 try {
			IPAddress ipAd = IPAddress.Parse("192.168.0.2"); 
			TcpListener myList=new TcpListener(ipAd,8001);

			myList.Start();

			Console.WriteLine("A correr na porta  8001...");				
			Console.WriteLine("há espera.....");

			Socket s=myList.AcceptSocket();
			Console.WriteLine("Conexão aceite de "+s.RemoteEndPoint);

			byte[] b=new byte[100];
			int k=s.Receive(b);
			Console.WriteLine("Recebido...");
			for (int i=0;i<k;i++)
				Console.Write(Convert.ToChar(b[i]));

			ASCIIEncoding asen=new ASCIIEncoding();
			s.Send(asen.GetBytes("A string foi recebida pelo servidor."));
			Console.WriteLine("\\nAck enviado ...");

			s.Close();
			myList.Stop();

		}
		catch (Exception e) {
			Console.WriteLine("Erro..... " + e.StackTrace);
		}


cliente

Código:
try {
			TcpClient tcpclnt = new TcpClient();
			Console.WriteLine("A conectar.....");
			
			tcpclnt.Connect("192.168.0.2",8001); 
			
			Console.WriteLine("Conectado");
			Console.Write("digite a string a transmitir : ");
			
			String str=Console.ReadLine();
			Stream stm = tcpclnt.GetStream();
						
			ASCIIEncoding asen= new ASCIIEncoding();
			byte[] ba=asen.GetBytes(str);
			Console.WriteLine("A Transmitir.....");
			
			stm.Write(ba,0,ba.Length);
			
			byte[] bb=new byte[100];
			int k=stm.Read(bb,0,100);
			
			for (int i=0;i<k;i++)
				Console.Write(Convert.ToChar(bb[i]));
			
			tcpclnt.Close();
		}
		
		catch (Exception e) {
			Console.WriteLine("Erro..... " + e.StackTrace);
		}


/ing
 
Última edição:
Back
Topo