ソケットを使用して RFID プリンターに文字列を印刷しようとしています。これが私のコードです。私が電話するとき:
Print p = new Print();
p.printToIP();
次のエラーが表示されます: ソケットが接続されておらず、(sendto 呼び出しを使用してデータグラム ソケットで送信する場合) アドレスが指定されていないため、データの送信または受信の要求は許可されませんでした。
ここに私のクラスコードがあります:
class Print
{
public string printerIP { get; set; }
public int printerPort { get; set; }
public string myZPL { get; set; }
private EndPoint ep { get; set; }
private Socket sock { get; set; }
private NetworkStream ns { get; set; }
//private AsyncCallback callbackWrite;
public Print()
{
printerIP = "127.0.0.1";
printerPort = 9001;
myZPL = "AN12345";
}
public void printToIP()
{
ep = new IPEndPoint(IPAddress.Parse(printerIP), printerPort);
sock = new Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
sock.Bind(ep);
sock.Listen(10);
try
{
sock.Connect(ep);
ns = new NetworkStream(sock);
byte[] toSend = Encoding.ASCII.GetBytes(myZPL);
ns.BeginWrite(toSend, 0, toSend.Length, OnWriteComplete, null);
ns.Flush();
}
catch (Exception ex)
{
sock.Shutdown(SocketShutdown.Both);
sock.Close();
}
}
private void OnWriteComplete(IAsyncResult ar)
{
NetworkStream thisNS = ns;
thisNS.EndWrite(ar);
sock.Shutdown(SocketShutdown.Both);
sock.Close();
}