Click here to Skip to main content
15,890,336 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
Questionstop scrolling of first column in CListView / CListCtrl Pin
ensger6-Mar-07 8:18
ensger6-Mar-07 8:18 
AnswerRe: stop scrolling of first column in CListView / CListCtrl Pin
Michael Dunn6-Mar-07 12:29
sitebuilderMichael Dunn6-Mar-07 12:29 
Questionpush_back ina vector - Not working for me Pin
LCI6-Mar-07 7:00
LCI6-Mar-07 7:00 
AnswerRe: push_back ina vector - Not working for me Pin
Maximilien6-Mar-07 7:30
Maximilien6-Mar-07 7:30 
GeneralRe: push_back ina vector - Not working for me Pin
LCI6-Mar-07 7:35
LCI6-Mar-07 7:35 
GeneralRe: push_back ina vector - Not working for me Pin
LCI6-Mar-07 7:46
LCI6-Mar-07 7:46 
GeneralRe: push_back ina vector - Not working for me Pin
CPallini6-Mar-07 9:53
mveCPallini6-Mar-07 9:53 
QuestionAsynchrounous sockets doubts Pin
Alex Cutovoi6-Mar-07 6:52
Alex Cutovoi6-Mar-07 6:52 
I'm new in sockets programming especially in the asynchronous sockets. I'm writing a server and client apps with asynchronous sockets to (of course) exchange data between them.

This is the code for the client app:

<br />
int SocketClient::CreateSocket(HWND hwnd)<br />
{<br />
    char cName[20];<br />
    hostent * hostInfo;<br />
    WSADATA wsStartup;<br />
    WORD wVersion = MAKEWORD(2, 0);<br />
    WSAStartup(wVersion, &wsStartup);<br />
    currSocket = socket(AF_INET, SOCK_STREAM, 0);<br />
    if(currSocket == INVALID_SOCKET)<br />
    {<br />
       MessageBox(NULL, "Socket não criado", "Erro", MB_OK);<br />
       return -1;<br />
    }<br />
    gethostname(cName, 20);<br />
    hostInfo = gethostbyname(cName);<br />
    for(int i = 0 ; i < 8 ; i++)infosSocket.sin_zero[i] = 0;<br />
    infosSocket.sin_family = AF_INET;<br />
    infosSocket.sin_port = htons(2500);<br />
    infosSocket.sin_addr = *((in_addr*)hostInfo->h_addr_list[0]);<br />
    WSAAsyncSelect(currSocket, hwnd, WM_ASYNCMSG, FD_CONNECT|FD_READ|FD_WRITE|FD_CLOSE);<br />
    return 0;<br />
}<br />
<br />
int SocketClient::ConnectToServer(HWND hwnd)<br />
{<br />
    int iReturn = 0;<br />
    iReturn = connect(currSocket, (sockaddr*)&infosSocket, sizeof(infosSocket));<br />
    if(iReturn == SOCKET_ERROR)<br />
    {<br />
       char cTemp[10];<br />
       int iResult = WSAGetLastError();<br />
       itoa(iResult, cTemp, 10);<br />
       MessageBox(NULL, cTemp, "", MB_OK);<br />
       return -1;<br />
    }<br />
    WSAAsyncSelect(currSocket, hwnd, WM_ASYNCMSG, FD_CONNECT|FD_READ|FD_WRITE|FD_CLOSE);<br />
    MessageBox(NULL, "OK", "", MB_OK);<br />
    return 0;<br />
}<br />



And this is the server code:

<br />
int SocketServer::CreateSocket(HWND hwnd)<br />
{<br />
    SocketServer::iBytesRecieved = 0;<br />
    int iReturn = 0;<br />
    WSADATA wsStartup;<br />
    WORD wVersion = MAKEWORD(2,0);<br />
    WSAStartup(wVersion, &wsStartup);<br />
    currSocket = socket(AF_INET, SOCK_STREAM, 0); //Cria o socket<br />
    if(currSocket == INVALID_SOCKET)<br />
    {<br />
       MessageBox(NULL, "Socket não criado", "Erro", MB_OK);<br />
       return -1;<br />
    }<br />
    socketInfo.sin_family = AF_INET;<br />
    socketInfo.sin_port = htons(2500);<br />
    socketInfo.sin_addr.s_addr = INADDR_ANY;<br />
    for(int i = 0 ; i < 8 ; i++)socketInfo.sin_zero[i]=0;<br />
    iReturn = bind(currSocket, (sockaddr*)&socketInfo, sizeof(sockaddr)); //insere os dados no socket(aqui estão setados pra server)<br />
    if(iReturn == SOCKET_ERROR)<br />
    {<br />
       int iError = WSAGetLastError();<br />
       MessageBox(NULL, "Erro", "", MB_OK);<br />
       return iError;<br />
    }<br />
    //Seta o socket para assíncrono<br />
    WSAAsyncSelect(currSocket, hwnd, WM_ASYNCMSG, FD_ACCEPT|FD_CLOSE|FD_READ|FD_WRITE);<br />
    return 0;<br />
}<br />
<br />
void SocketServer::ListenConnections()<br />
{<br />
    listen(currSocket, 5);<br />
}<br />
<br />
//Retorna um novo socket já conectado com o cliente<br />
SOCKET SocketServer::AcceptConnection(HWND hwnd)<br />
{<br />
    SOCKET tempSocket = 0;<br />
    int iSize = sizeof(sockaddr_in);<br />
    tempSocket = accept(currSocket, (sockaddr*)&socketInfo, &iSize);<br />
    WSAAsyncSelect(tempSocket, hwnd, WM_ASYNCMSG, FD_READ|FD_WRITE|FD_CLOSE);<br />
    return tempSocket;<br />
}<br />



Now the questions:

The SendData and RecieveData funcs that contains send and recv funcs respectively, needs to be in a thread for that FD_READ and FD_WRITE messages will be sended?

In the ConnectToServer func, when I start the server and the client app, I've received WSAEWOULDBLOCK message. If I call this funcition again I receive the WSAEISCONN message. This means that my socket is connected? If so, why I receive the WSAEWOULDBLOCK message first?

In some sites that I've readed some tutorials, they say that, in the FD_WRITE message I need to have some caution because this message is sent when there are more space in the buffer with which to write data. Can someone explains tis to me?


Sorry for this long post fellows, but I need a help in this.
AnswerRe: Asynchrounous sockets doubts Pin
Mark Salsbery6-Mar-07 15:10
Mark Salsbery6-Mar-07 15:10 
GeneralRe: Asynchrounous sockets doubts Pin
Alex Cutovoi7-Mar-07 3:15
Alex Cutovoi7-Mar-07 3:15 
GeneralRe: Asynchrounous sockets doubts Pin
Mark Salsbery7-Mar-07 4:25
Mark Salsbery7-Mar-07 4:25 
GeneralRe: Asynchrounous sockets doubts Pin
Alex Cutovoi7-Mar-07 5:06
Alex Cutovoi7-Mar-07 5:06 
GeneralRe: Asynchrounous sockets doubts Pin
Mark Salsbery7-Mar-07 5:22
Mark Salsbery7-Mar-07 5:22 
GeneralRe: Asynchrounous sockets doubts Pin
Alex Cutovoi7-Mar-07 6:16
Alex Cutovoi7-Mar-07 6:16 
QuestionCapture specific area on screen... Pin
priyank_ldce6-Mar-07 5:31
priyank_ldce6-Mar-07 5:31 
AnswerRe: Capture specific area on screen... Pin
Ravi Bhavnani6-Mar-07 5:34
professionalRavi Bhavnani6-Mar-07 5:34 
GeneralRe: Capture specific area on screen... Pin
priyank_ldce6-Mar-07 6:12
priyank_ldce6-Mar-07 6:12 
GeneralRe: Capture specific area on screen... Pin
Ravi Bhavnani6-Mar-07 6:16
professionalRavi Bhavnani6-Mar-07 6:16 
GeneralRe: Capture specific area on screen... Pin
Blake Miller6-Mar-07 6:44
Blake Miller6-Mar-07 6:44 
AnswerRe: Capture specific area on screen... Pin
Mark Salsbery6-Mar-07 15:13
Mark Salsbery6-Mar-07 15:13 
QuestionHow to show tool tip help for tool bar items? Pin
Aryan S6-Mar-07 5:14
Aryan S6-Mar-07 5:14 
AnswerRe: How to show tool tip help for tool bar items? Pin
led mike6-Mar-07 5:28
led mike6-Mar-07 5:28 
AnswerRe: How to show tool tip help for tool bar items? Pin
Ravi Bhavnani6-Mar-07 5:33
professionalRavi Bhavnani6-Mar-07 5:33 
QuestionReal Time Application - Server Socket Pin
ScotDolan6-Mar-07 4:45
ScotDolan6-Mar-07 4:45 
AnswerRe: Real Time Application - Server Socket Pin
led mike6-Mar-07 4:53
led mike6-Mar-07 4:53 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.