NetworkComms.NetフレームワークTcp通信ノート
インスタンスソース
1.プロジェクトはNetworkCommsDotNetを参照する必要がある.dll(NetworkComms.Net通信フレームワーク)シーケンス番号を導入するにはprotobuf-netを導入する必要があります.dll(NetworkCommsDotNetは、最も一般的なシーケンス化方式を提供します)
2.
ここでは、サービス側のリスニングと時間メッセージ処理です.
クライアントから送信されたGetNameを取得すると、クライアントにResNameのオブジェクトタイプが返されます.
クライアントステップ:IPEndPointオブジェクトの作成――IPEndPointの傍受――メッセージ処理
注意:StartListeningは、リスニング・リストにリスニング・アドレスを追加する静的メソッドです.つまり、リストを書いて複数のリスニングを追加できます.静的でインスタンス化されていないため、現在のサーバの接続ip情報を取得するにはNetworkCommsクラスのAllConnectionInfo()メソッドが必要です
情報処理、参照:https://blog.csdn.net/networkcomms/article/details/44218217
3.クラスを転送するときのシーケンス化の構文は(protobuf-net.dllをインポートする必要がある)
4.クライアント接続サーバ(クライアントのipはネイティブip、ポートが設定されていない場合はランダムに割り当てられる(一般的にはランダムに割り当てられる)
//接続情報類public ConnectionInfo connnecionInfo=null;
//接続クラス接続接続;
connnectionInfo=new ConnectionInfo(Ip,ポート);
//失敗した場合、例外メッセージconnection=TCPConnectionがポップアップされます.GetConnection(connnectionInfo);
クライアントメッセージ処理:
A resMsg = connection.SendReceiveObject("GetName", "ResName", 5000, "111");
GetNameから送信されたデータ名
「ResName」が受信したデータ名
5000、タイムアウト時間(ミリ秒)
「111」送信データ
必要な友达がいたら、私が送った完全な例を教えてください.
1.プロジェクトはNetworkCommsDotNetを参照する必要がある.dll(NetworkComms.Net通信フレームワーク)シーケンス番号を導入するにはprotobuf-netを導入する必要があります.dll(NetworkCommsDotNetは、最も一般的なシーケンス化方式を提供します)
2.
A aaa = null;
public List connectionInfos;
public List connectionListenerBases;
private void button1_Click(object sender, EventArgs e)
{
//IP
IPEndPoint thePoint = new IPEndPoint(IPAddress.Parse(textBox1.Text), int.Parse(textBox2.Text));
// IP TCP
connectionListenerBases = Connection.StartListening(ConnectionType.TCP, thePoint);
// GetName
NetworkComms.AppendGlobalIncomingPacketHandler("GetName", IncomingMsgHandle);
button1.Text = " ";
}
private void IncomingMsgHandle(PacketHeader header, Connection connection, string msg)
{
aaa = new A();
connection.SendObject("ResName", aaa);
}
ここでは、サービス側のリスニングと時間メッセージ処理です.
クライアントから送信されたGetNameを取得すると、クライアントにResNameのオブジェクトタイプが返されます.
クライアントステップ:IPEndPointオブジェクトの作成――IPEndPointの傍受――メッセージ処理
注意:StartListeningは、リスニング・リストにリスニング・アドレスを追加する静的メソッドです.つまり、リストを書いて複数のリスニングを追加できます.静的でインスタンス化されていないため、現在のサーバの接続ip情報を取得するにはNetworkCommsクラスのAllConnectionInfo()メソッドが必要です
情報処理、参照:https://blog.csdn.net/networkcomms/article/details/44218217
3.クラスを転送するときのシーケンス化の構文は(protobuf-net.dllをインポートする必要がある)
[ProtoContract]
public class A
{
public A()
{
Age = Guid.NewGuid().ToString();
Name = Guid.NewGuid().ToString();
DT = DateTime.Now.Millisecond;
}
[ProtoMember(1)]
public string Age { get; private set; }
[ProtoMember(2)]
public string Name { get; private set; }
[ProtoMember(3)]
public int DT { get; private set; }
}
4.クライアント接続サーバ(クライアントのipはネイティブip、ポートが設定されていない場合はランダムに割り当てられる(一般的にはランダムに割り当てられる)
//接続情報類public ConnectionInfo connnecionInfo=null;
//接続クラス接続接続;
connnectionInfo=new ConnectionInfo(Ip,ポート);
//失敗した場合、例外メッセージconnection=TCPConnectionがポップアップされます.GetConnection(connnectionInfo);
クライアントメッセージ処理:
A resMsg = connection.SendReceiveObject("GetName", "ResName", 5000, "111");
GetNameから送信されたデータ名
「ResName」が受信したデータ名
5000、タイムアウト時間(ミリ秒)
「111」送信データ
必要な友达がいたら、私が送った完全な例を教えてください.