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
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"
experimentei... e tambem dá erro... por overload... ñ será alguma de biblioteca em falta? aceito dicas... sou iniciante em c#...
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