루비를 이용한 TCPSocket 프로그래밍 예제입니다.
손에서 잠시 멀어지다 보니 이런것 하나 짜는데도 혼자 덜덜덜 이였네요.
역시 개발자는 개발을해야지 이거 감떨어지면 끝장입니다. 열심히 열심히!!
#!/usr/local/bin/ruby
require 'socket'
port = 80 # Default HTTP port
list = File.new("/neouser.txt", "r")
while(line = list.gets)
host = line.strip()
path = ARGV[0].strip()
if (host != nil and path != nil) then
puts "---- remove cache #{host}#{path}----------------------------------"
#request = "PURGE #{path} HTTP/1.0\r\nHOST: #{host}\r\n\r\n"
request = "PURGE #{path} HTTP/1.0\r\nHOST: neouser.tet.url \r\n\r\n"
socket = TCPSocket.open(host,port) # Connect to server
socket.print(request) # Send request
response = socket.read # Read complete response
puts response
end
end
코드가 쉽다고 웃기게 보면 안됩니다.
이 코드에는 숨은 진실의 라인이 하나 있습니다.
TCPSocket의 경우 그 대상서버군에서 read 결과를 잘 못받는 경우가 있습니다.
해결책은 readline으로 중간중간 산출되는 결과를 받고 싶으면 그때마다 readline을 적여줘야 합니다.
socket.write(request) # Send request
socket.readline # Read complete response
socket.write("quit\r\n") # Send request
result = socket.readline # Read complete response
몇줄 안되지만 결코 웃긴 코드는없습니다.