TCPとデスクトップ描写
- 題名: TCPとデスクトップ描写
- 著者: NS
- 日時: 2014/03/12 19:04:54
- ID: 32191
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: TCPとデスクトップ描写
- 著者: kiku
- 日時: 2014/03/12 19:32:44
- ID: 32194
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: TCPとデスクトップ描写
- 著者: ns
- 日時: 2014/03/12 19:58:21
- ID: 32195
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: TCPとデスクトップ描写
- 著者: ns
- 日時: 2014/03/12 20:15:11
- ID: 32196
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
いつも、こちらのサイト様を利用させて頂いているものです。
C#でTCPを用いたプログラミングで躓いています。
TCPclientで得た座標を元に、リモート先で直線を引きたく、コーディングいたしました。
しかし、1回目は成功するものの、2回目以降のデータの処理がされません。(try文でnot validなどと返されてしまいます。)
どう変更すればよろしいのでしょうか?
/////
//Startボタン
private void button1_Click_1(object sender, EventArgs e)
{
try
{
ip = "x.x.x.x";
port = 2000;
client = new TcpClient(ip, port);
stream = client.GetStream();
byte[] tmp = ImageToByteArray(image1);
stream.Write(tmp, 0, tmp.Length);
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
try
{
//while (true)
//{
ip2 = IPAddress.Any;
port2 = 9000;
server2 = new TcpListener(ip2, port2);
server2.Start();
System.IntPtr DesktopHandle = GetDC(System.IntPtr.Zero);
Graphics g2 = System.Drawing.Graphics.FromHdc(DesktopHandle);
System.Drawing.Pen myPen;
myPen = new System.Drawing.Pen(System.Drawing.Color.Red, 4);
while(true) {
client2 = server2.AcceptTcpClient();
NetworkStream stream2 = client2.GetStream();
byte[] getData = new byte[1024 * 1024 * 10];
int count = stream2.Read(getData, 0, getData.Length);
if (count != 0)
{
IPEndPoint endpoint = (IPEndPoint)client.Client.RemoteEndPoint;
IPAddress address = endpoint.Address;
Byte[] getByte = new byte[count];
for (int i = 0; i < count; i++)
{
getByte[i] = getData[i];
}
string data = Encoding.UTF8.GetString(getByte);
//MessageBox.Show(data);
string[] sdata = data.Split('&');
string[] sdata1 = sdata[0].Split('+');
string[] sdata2 = sdata[1].Split('+');
g2.DrawLine(myPen, int.Parse(sdata1[0]), int.Parse(sdata1[1]), int.Parse(sdata2[0]), int.Parse(sdata2[1]));
myPen.Dispose();
stream2.Close();
client2.Close();
}
g2.Dispose();
} //End of while(1)
}
catch (Exception exp)
{
MessageBox.Show(exp.Message);
}
}