RosettaCodeData/Task/Distributed-programming/FreeBASIC/distributed-programming-2.b...

53 lines
1.2 KiB
Plaintext

#include "win/winsock2.bi"
Const SERVER_IP = "127.0.0.1"
Const PORT = 12345
Sub initialize_winsock()
Dim wsadata As WSADATA
If WSAStartup(&h0202, @wsadata) <> 0 Then
Print "WSAStartup failed"
End 1
End If
End Sub
Sub cleanup_winsock()
WSACleanup()
End Sub
initialize_winsock()
Dim client_socket As SOCKET
client_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
If client_socket = INVALID_SOCKET Then
Print "Socket creation failed"
cleanup_winsock()
End 1
End If
Dim server_addr As sockaddr_in
server_addr.sin_family = AF_INET
server_addr.sin_port = htons(PORT)
server_addr.sin_addr.S_addr = inet_addr(SERVER_IP)
If connect(client_socket, Cast(sockaddr Ptr, @server_addr), Sizeof(server_addr)) = SOCKET_ERROR Then
Print "Connect failed"
closesocket(client_socket)
cleanup_winsock()
End 1
End If
Dim buffer As zstring * 1024
Do
Print "Enter message: ";
Input "", buffer
send(client_socket, @buffer, Len(buffer), 0)
Dim bytes_received As Integer
bytes_received = recv(client_socket, @buffer, Sizeof(buffer), 0)
If bytes_received <= 0 Then Exit Do
Print "Received: "; buffer
Loop
closesocket(client_socket)
cleanup_winsock()