C# 套接字在服务器关闭时关闭客户端
服务器幻灯片:C# 套接字在服务器关闭时关闭客户端,c#,sockets,tcp,client,C#,Sockets,Tcp,Client,服务器幻灯片: public void Hey() { sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); LingerOption lo = new LingerOption(false, 0); sck.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName
public void Hey()
{
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
LingerOption lo = new LingerOption(false, 0);
sck.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.Linger,lo);
try
{
sck.Bind(Login.ip_ep);
sck.Listen(100);
Socket accepted = sck.Accept();
byte[] buff = new byte[300000];
MemoryStream m = new MemoryStream();
read = accepted.Receive(buff, buff.Length, 0);
m.Write(buff, 0, read);
while (read > 0)
{
read = accepted.Receive(buff, buff.Length, 0);
if (read != 0)
m.Write(buff, 0, read);
}
Bitmap p = new Bitmap(m, false);
m.Dispose();
pictureBox1.Image = p;
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
accepted.Dispose();
accepted.Close();
sck.Dispose();
sck.Close();
}
catch (Exception f)
{
}
}
private void timer1_Tick(object sender, EventArgs e)
{
Thread t = new Thread(Hey);
t.Start();
}
客户幻灯片:
private void timer1_Tick(object sender, EventArgs e)
{
Bitmap b = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics g = Graphics.FromImage(b as Image);
g.CopyFromScreen(0, 0, 0, 0, b.Size);
pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox1.Image = b;
sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
sck.Connect(Login.ip_ep);
MemoryStream s = new MemoryStream();
pictureBox1.Image.Save(s, System.Drawing.Imaging.ImageFormat.Png);
sck.Send(s.ToArray());
sck.Dispose();
sck.Close();
}
catch (Exception f) {
}
}
每当我关闭服务器时,我都要关闭客户端套接字。有可能吗?
另一件事是,在我关闭服务器并重新打开它之后,我只允许使用每个套接字地址,这是什么?不要忽略异常。在服务器关闭其连接结束后向其写入时,您将收到IOException:“connection reset”。如果您正在读取,您将从read获得-1,从readLine获得null,或者从readXXX获得任何其他X的EOFEException。关闭服务器套接字是否会在客户端引发异常,您将忽略该异常?