Я видел только возвращение EAGAIN в этом случае, так же, как вы видели бы в случае, когда нет данных для чтения.Для записи в неподключенный сокет вы обычно получаете ENOTCONN, хотя я полагаю, что некоторые платформы могут дать вам EAGAIN.
Вот тривиальный скрипт Python для демонстрации:
import socket
# Any address that does not succeed or fail right away will do
ADDR = "192.168.100.100"
PORT = 23
s = socket.socket()
s.setblocking(False)
try:
s.connect((ADDR, PORT))
except socket.error, e:
print "Connect gave us",e
try:
s.recv(1)
except socket.error, e:
print "Read gave us",e
try:
s.send("x")
except socket.error, e:
print "Write gave us",e
Для меня,он дает: Connect дал нам (36, «Операция сейчас выполняется»). Чтение дал нам (35, «Ресурс временно недоступен»). Запись дал нам (57, «Сокет не подключен»)
Это EINPROGRESS, EAGAIN и ENOTCONN соответственно.