|
|
|
новичок
      
участник
Last Login: 06.09.2007 15:10
Сообщ.: 2,
Visits: 12
|
|
проблема состоит в том что я получаю не полные данные
Схематично это выглядит так: должно быть "трымпампам", а получаю "трымпамп"...
private string respose;
private class StateObject
{
// Client socket.
public Socket workSocket = null;
// Size of receive buffer.
public int BufferSize = 256;
// Receive buffer.
public byte[] buffer = new byte[256];
// Received data string.
public StringBuilder sb = new StringBuilder();
}
private void button1_Click(object sender, EventArgs e)
{
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
StateObject state = new StateObject();
client.Connect("google.com", 80);
state.workSocket = client;
client.BeginReceive(state.buffer, 0, state.BufferSize, SocketFlags.None, new AsyncCallback(ReciveCallBack), state);
byte[] buff = Encoding.ASCII.GetBytes("GET / HTTP/1.0\r\r");
client.Send(buff);
}
private void ReciveCallBack(IAsyncResult ar) {
try {
StateObject state = (StateObject)ar.AsyncState;
Socket client = state.workSocket;
int bytesRead = client.EndReceive(ar);
MessageBox.Show(Convert.ToString(bytesRead));
if (bytesRead > 0)
{
state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, state.BufferSize));
client.BeginReceive(state.buffer, 0, state.BufferSize, SocketFlags.None, new AsyncCallback(ReciveCallBack), state);
}
else
{
MessageBox.Show(Encoding.ASCII.GetString(state.buffer, 0, state.BufferSize));
if (state.buffer.Length > 1)
{
respose = state.sb.ToString();
ReciveEndCallBack();
}
}
} catch (Exception e) {
MessageBox.Show(":( Error:\r\r"+e.ToString());
}
}
private void ReciveEndCallBack() {
//MessageBox.Show(respose);
FileStream file = new FileStream("c:\\1.txt", FileMode.Create);
byte[] buff = Encoding.ASCII.GetBytes(respose);
file.Write(buff, 0, buff.Length);
file.Close();
}
|
|
|
|
|
новичок
      
участник
Last Login: 04.09.2007 13:12
Сообщ.: 1,
Visits: 2
|
|
byte[] buff = Encoding.ASCII.GetBytes(respose);
подозрение а кодировка точно ASCII Если это запрос к HTTP серверу (судя по примеру) , может есть смысл изпользовать System.Net.WebClient или System.Net.HttpWebRequest
|
|
|
|
|
новичок
      
участник
Last Login: 06.09.2007 15:10
Сообщ.: 2,
Visits: 12
|
|
| Я тоже про это думал... но решил попробывать поработать сначала с сокетами(только учу .НЕТ), а во вторых нужно еще картинки качать
|
|
|
|