System.Net.Sockets.TcpClientの使い方を勉強したので、さっそくC#(client)からprocessing(server)にsocketでメッセージを送信して、processing側で受信した内容をprintlnしてみた。

C# -> Processing” /></a></p>
<p>これで、<a href=webcamで撮影してファイルに保存する部分だけprocessingに委譲できる。その保存したファイルをFileSystemWatcherとかで監視して、C#側で料理しよう。



送信側:Source Code (C#2.0 VisualStudio 2005)

usingSystem;

usingSystem.Collections.Generic;

usingSystem.ComponentModel;

usingSystem.Data;

usingSystem.Drawing;

usingSystem.Text;

usingSystem.Windows.Forms;

namespaceSocketClient

{

publicpartialclassForm1:Form

{

System.Text.Encodingenc=System.Text.Encoding.UTF8;

Stringhost=”localhost”;

intport=5800;

System.Net.Sockets.TcpClienttcp;

publicForm1()

{

InitializeComponent();

tcp=newSystem.Net.Sockets.TcpClient(host,port);

}

privatevoidbuttonSendMsg_Click(objectsender,EventArgse)

{

System.Net.Sockets.NetworkStreamns=tcp.GetStream();

StringsendMsg=textBoxMsg.Text;

byte[]sendBytes=enc.GetBytes(sendMsg);

ns.Write(sendBytes,0,sendBytes.Length);

}

privatevoidForm1_FormClosed(objectsender,FormClosedEventArgse)

{

tcp.Close();

}

}

}

サーバー(受信側):Source Code (Processing 0124 Beta)

/***

TCP:4444portで受信したStringをprintlnする

Stringをechoもする

Compiler:Proce55ing0097Beta

Date:2007/4/29

Author:ShoHashimoto

WebSite:http://shokai.org

***/

importprocessing.net.*;

intport=5800;

Serverserver;

Stringstr;

voidsetup(){

server=newServer(this,port);

}

voiddraw(){

Clientclient=server.available();//接続してきたClient

if(client!=null){//Clientがいるなら

if((str=client.readString())!=null){//文字列を送ってきているなら受信

println(str);//受信した文字列を表示

}

}

}

/*Clientが接続してきた時*/

voidserverEvent(Servers,Clientc){

println(“Clientconnected-IP:”+c.ip());//IPアドレス表示

}