一個簡單的Delphi與go lang通訊的例子

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

服務端用go:(go 1.3)搭建一個tcp伺服器,用戶端用Delphi。通過socket與go進行通訊:

服務端代碼:

package mainimport ("fmt""net""time""strings""net/http")func main() {service := ":1200"tcpAddr, err := net.ResolveTCPAddr("tcp4", service)checkError(err)listener, err := net.ListenTCP("tcp", tcpAddr)checkError(err)for {conn, err := listener.Accept()if err != nil {continue}go handleClient(conn)}}func handleClient(conn net.Conn) {request := make([]byte, 1024)defer conn.Close() for {read_len, err := conn.Read(request)if err != nil {fmt.Println(err)break}fmt.Println(read_len)if read_len == 0 {fmt.Println("Notings get!!")break}else{v_kss:=request[0:read_len];fmt.Println(string(v_kss));}}}

用戶端代碼:

procedure TForm1.btn1Click(Sender: TObject);var  sa:TWSAData;  wstates:Integer;  add:sockaddr_in;begin  wstates:=WSAStartup($0202,sa);  if wstates<>0 then  begin    ShowMessage('socket 初始化出錯');    exit;  end;  st:=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);  if st=INVALID_SOCKET then  begin    ShowMessage('建立socket出錯');    WSACleanup;    Exit;  end;  add.sin_family:=PF_INET;  add.sin_port:=htons(1200);  add.sin_addr.S_addr:=inet_addr(PAnsiChar('127.0.0.1'));  wstates:=connect(st,add,SizeOf(add));  if wstates<>0 then  begin    ShowMessage('串連錯誤');    WSACleanup;    Exit;  end;end;procedure TForm1.btn2Click(Sender: TObject);var  sendLen :Integer;  mdata: TBytes;begin  if edt1.Text <> '' then  begin    mdata:=TEncoding.UTF8.GetBytes(mmo1.Text);   //此處要注意下。這麼寫的話會,傳送的字元後面會加上一個斷行符號換行傳到服務端。    sendLen := send(st,mdata[0],Length(mdata),0);    showmessage(inttostr(sendLen));    if sendLen < 0 then    begin      ShowMessage('發送出錯');      WSACleanup;      btn1.Enabled := False;      Exit;    end;  end;end;

 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.