System.Net.Sockets.TcpClientの使い方を勉強したので、さっそくC#(client)からprocessing(server)にsocketでメッセージを送信して、processing側で受信した内容をprintlnしてみた。
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アドレス表示
}