Eu socket issues (was problems with webutils)
- Posted by Ted Fines <fines at macalester.edu> Aug 03, 2001
- 427 views
Hi all, OK, so now I'm trying sockets stuff using eutcp4u. Kat sent me this function: global function ReadServer(object sock) sequence recievedline,sock_receive recievedline = "" while tcp4u_is_data_avail(sock[2]) do sock_receive = tcp4u_receive(sock[2],1,1) if sock_connect[1] != TCP4U_SUCCESS then printf(1, "tcp4u_connect error '%s'\n", {tcp4u_error_string(sock_connect[tcp4u_ret])} ) exit end if if equal(sock_receive[2],{10}) then sock_receive[2] = "" end if if equal(sock_receive[2],{13}) then return recievedline else recievedline &= sock_receive[2] end if end while -- tcp4u_is_data_avail(sock[2]) do return"" end function -- checkserver So here's a little test code I wrote, to connect to the server. -- open socket and connect asock_conn=tcp4u_connect("141.140.1.2",NULL,143) if asock_conn[1] != TCP4U_SUCCESS then printf(1, "tcp4u_connect error '%s'\n", {tcp4u_error_string(asock_conn[tcp4u_ret])} ) abort(1) end if -- process login message data. if I don't have it sleep -- here, sometimes 'result' comes back blank. Eu too fast -- for its own good? sleep(1) result=ReadServer(asock_conn) puts(1,result & "\n") -- send login credentials ret = tcp4u_send_sequence(asock_conn[2],"A LOGIN " & name & " " & password & "\n") if ret != TCP4U_SUCCESS then printf(1, "tcp4u_send error '%s'\n", tcp4u_error_string(ret)) end if -- see if we logged in OK sleep(1) result=ReadServer(asock_conn[2]) puts(1,result & "\n") But here's the problem: result, after "see if we logged in OK" is ALWAYS empty. Nothing comes back. Why not? I am sure the login request is getting sent correctly, or ret would come back with an error response. I've tried sending the login command a second and a third time, and looking for a result. Nothing ever comes back. I have ended my A LOGIN command above with "\r\n" and "\n" with the same result. So it seems I have a connection, and I seem to be sending data OK, yet nothing comes back??? Help!