したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

C#、Vb2005 でSocket通信

4igoten:2010/06/09(水) 09:21:47
//メインスレッドのテキストボックスに書き込む
fomServer.Invoke (new dlgWriteText(fomServer.WriteReadText)
, new object[] { this,strGetText });
ここでエラーが出るのですか?

5RYU:2010/06/09(水) 09:41:52
そこを書き換えて、イベントが発生するようにしています。
public class Server_ER_data : EventArgs
{

public string ip;
public int port;
public string d1;
public string d2;

//Recive data constructer
public Server_ER_data(string ip, int port, string d1, string d2)
{
this.ip = ip;
this.port = port;
this.d1 = d1;
this.d2 = d2;
}

}

public class ServerOpener
{


// EvevntHandler Datarecive Server_R_Data
public delegate void Server_recive(object r, Server_ER_data r_data);
public event Server_recive OnRecive;

    ・・・・・・・・・・

6RYU:2010/06/09(水) 09:47:38
すみません。続きです。
private void OnReadComplete(IAsyncResult ar)
{
try
{
//受信文字をStreamから読み込みます
if (networkStream == null)
return;

//受信バイト数が返る
int bytesRead = networkStream.EndRead(ar);


if (bytesRead > 0)  //受信文字が有った
{
//受信部分だけ切り出す
Byte[] getByte = new byte[bytesRead];
for (int i = 0; i < bytesRead; i++)
getByte[i] = buffer[i];

byte[] uniBytes;
//'S-Jisからユニコードに変換
uniBytes = Encoding.Convert(ecSjis, ecUni, getByte);
string orMsg = BitConverter.ToString(getByte);

//バイト配列から文字列に変換する
string strGetText = ecUni.GetString(uniBytes);
//受信文字を切り出す

// 相手先を調べる
IPEndPoint r_ip1 = (IPEndPoint)this.socket.RemoteEndPoint;
string rip = Convert.ToString(r_ip1.Address);


// 受信ポートを調べる
IPEndPoint l_port = (IPEndPoint)this.socket.LocalEndPoint;
int lp = Convert.ToInt16(l_port.Port);
//event handler
Server_ER_data rr = new Server_ER_data(rip, lp, orMsg, strGetText);
OnRecive(this, rr);


//とりあえず返信する

WriteString(uniBytes);
//次の受信を待つ
networkStream.BeginRead(buffer, 0, buffer.Length, callbackRead, null);

としています。
ここのOnRecive(this, rr);でイベントを発生させ、呼び出し側で、
受信データの処理を行いたいと思っています。
サンプルでは、直接フォームのテキストに書いていますが、一度受取、処理したいと考えています。
良い方法をご指導願います。

7igoten:2010/06/09(水) 10:59:44
それでどの行でエラーが出るのでしょうか?

8RYU:2010/06/09(水) 20:57:52
度々、すみません。自己解決できました。
public class ServerOpener
{

// EvevntHandler Datarecive Server_R_Data
public delegate void Server_recive(object r, Server_ER_data r_data);
public event Server_recive OnRecive;

で、制御元より、イベントを受け取るメソッドのなかで、リストボックスに
追記する制御を行っており、この部分が2度目にエラーとなりました。
ここで、直接リストボックスを制御せず、ここにInvokeでスレッドを作り、
処理を渡しました。

質問のしかたに問題があり、お手数をおかけしました。
ありがとうございました。

お手が空きました、IPアドレスをポーリングして、データを収集するサンプルを
お教えいただければと思います。

9<削除>:<削除>
<削除>

10<削除>:<削除>
<削除>

11<削除>:<削除>
<削除>

15クロエ バッグ:2013/10/23(水) 16:19:49
I am sure this article has touched all the internet people, its really really nice piece of writing on building up new webpage.
クロエ バッグ http://www.myindyareahome.com/


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板