1. 程式人生 > >PHP客戶端與C#伺服器端 Socket通訊

PHP客戶端與C#伺服器端 Socket通訊

using System.Collections.Generic;

using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace UpdServer
{
    class Program
    {
        static void Main(string[] args)
        {
            int port = 2000;
            string host = "127.0.0.1";

            ///建立終結點(EndPoint)
            IPAddress ip = IPAddress.Parse(host);//把ip地址字串轉換為IPAddress型別的例項
            IPEndPoint ipe = new IPEndPoint(ip, port);//用指定的埠和ip初始化IPEndPoint類的新例項

            ///建立socket並開始監聽
            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//建立一個socket對像,如果用udp協議,則要用SocketType.Dgram型別的套接字
            s.Bind(ipe);//繫結EndPoint對像(2000埠和ip地址)
            s.Listen(0);//開始監聽
            Console.WriteLine("等待客戶端連線");

            ///接受到client連線,為此連線建立新的socket,並接受資訊
            while(true)
            {
                Socket temp = s.Accept();//為新建連線建立新的socket
                Console.WriteLine("建立連線");
                string recvStr = "";
                byte[] recvBytes = new byte[1024];
                int bytes;
                bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//從客戶端接受資訊
                recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);

                ///給client端返回資訊
                Console.WriteLine("server get message:{0}", recvStr);//把客戶端傳來的資訊顯示出來
                string sendStr = "ok!Client send message successful!";
                byte[] bs = Encoding.ASCII.GetBytes(sendStr);
                temp.Send(bs, bs.Length, 0);//返回資訊給客戶端
                temp.Close();
            }

            s.Close();
            Console.ReadLine();
        }
    }
}
PHP程式碼
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$con=socket_connect($socket,'127.0.0.1',2000);
if(!$con){socket_close($socket);exit;}
echo "Link\n";
socket_write($socket, "hello socket");
while($hear=socket_read($socket,1024)){
	 echo("Response was:" . $hear . "\n");
}
socket_shutdown($socket);
socket_close($socket);
?>