// Server ทำหน้าที่ส่งรูป,ข้อมูลที่ไปที่ client
private void Server_Send()
{
string[] s=readdata.Split(':');
string name="";
if (s.Length==3)name=s[2];
TcpClient t=null;
if (chatserver.FindUserRoom(name)!=0)
t=(TcpClient)chatserver.ClientConnections[name.ToUpper()];
if((t!=null))
{
chatserver.Write(client.GetStream(),
ChatProtocolValues.SEND_PIC_MSG);
//Find out the number of byte to read from sender
string snumbytes=chatserver.Read(client.GetStream());
int numbytes=int.Parse(snumbytes);
//read the bytes
byte[] b=chatserver.ReadBinary(client.GetStream(),numbytes);
if (b==null)
{
chatserver.Write(client.GetStream(),
"server> Transmission Error");
return;
}
FileStream f=new FileStream(nickname+"_"+name+".jpg",FileMode.Create);
f.Write(b,0,b.Length);
f.Close();
chatserver.Write (t.GetStream(),
ChatProtocolValues.PIC_FROM_MSG(nickname,name));
chatserver.Write(client.GetStream(),
ChatProtocolValues.PIC_SEND_MSG(nickname));
}
else
{
//If target is not found inform sender
chatserver.Write(client.GetStream(),
ChatProtocolValues.USER_NOT_FOUND_MSG(name));
}
}
//Client ทำหน้าที่รับรูปมาจาก Server
private void action_get_pic()
{
string[] s=readdata.Split(':');
string sender="";
string picname="";
if(s.Length==3)sender=s[2];
picname=sender + "_" + nickname + ".jpg";
//Check for existence of file
if(!File.Exists(picname))
chatserver.Write(client.GetStream(),
ChatProtocolValues.PIC_NOT_FOUND_MSG(picname));
else
{
//Create a file stream
FileStream f=new FileStream(picname,FileMode.Open);
FileInfo fi=new FileInfo(picname);
byte[] b=new byte[fi.Length];
f.Read(b,0,b.Length);
f.Close();
chatserver.Write (client.GetStream(),
ChatProtocolValues.GET_PIC_MSG);
chatserver.Write(client.GetStream(),""+b.Length);
chatserver.WriteBinary(client.GetStream(),b);
//Inform the client that all binary data has been send
chatserver.Write(client.GetStream(),
ChatProtocolValues.PIC_SEND_ACK_MSG);
//Locate the sender of the picture
TcpClient t=null;
if (chatserver.FindUserRoom(sender)!=0)
t=(TcpClient)chatserver.ClientConnections[sender.ToUpper()];
//Inform the sender that the target has gotten the picture
if(t!=null)
chatserver.Write(t.GetStream(),
ChatProtocolValues.GOTTEN_PIC_MSG(nickname));
}
}
[With great power comes great responsibility]