我写的红外通讯的服务端,怎么谁也连接不上呢?(有源码,高分求助)
我自己写的一个红外的通讯程序,服务端源码如下:
#define _WIN32_WINNT 0x0500
#define WINVER 0x0500
#define WIN32_LEAN_AND_MEAN
#define UNICODE 1
#define _UNICODE 1
#include <WinSock2.h>
#include <STDIO.H> //wprintf etc
#include "af_irda.h"
#pragma comment ( lib, "WS2_32.Lib" )
void ErrOut()
{
LPVOID lpMsgBuf;
DWORD errCode=GetLastError();
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
errCode,
MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL);
printf("%sError Code=%d\n",(LPTSTR)lpMsgBuf,errCode);
LocalFree( lpMsgBuf );
}
int main()
{
WSADATA wsaData;
SOCKET ServerSock, // IR socket bound to the server
ClientSock; // IR socket bound to the client
SOCKADDR_IRDA address = {AF_IRDA, 0, 0, 0, 0, "IrDA:IrCOMM"};
// Specifies the server socket address
int index = 0, // Integer index
iReturn; // Return value of recv function
char szServerA[100]; // ASCII string
WSAStartup(MAKEWORD(1,1),&wsaData);
// Create a socket bound to the server.
if ((ServerSock = socket (AF_IRDA, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
ErrOut();
return FALSE;
}
// Associate the server socket address with the server socket.
printf("\nbegin bind");
if (bind (ServerSock, (struct sockaddr *)&address, sizeof (address))
== SOCKET_ERROR)
{
ErrOut();
closesocket (ServerSock);
return FALSE;
}
// Establish a socket to listen for incoming connections.
printf("\nbegin listen");
if (listen (ServerSock, 5) == SOCKET_ERROR)
{
ErrOut();
closesocket (ServerSock);
return FALSE;
}
// Accept a connection on the socket.
printf("\nwait connect");
if ((ClientSock = accept (ServerSock, 0, 0)) == INVALID_SOCKET)
{
ErrOut();
closesocket (ServerSock);
return FALSE;
}
// Stop listening for connections from clients.
closesocket (ServerSock);
// Send a string from the server socket to the client socket.
printf("\nmessage \"To Client\" sent to client");
if (send (ClientSock, "To Client!", strlen ("To Client!") + 1, 0)
== SOCKET_ERROR)
{
ErrOut();
}
// Receive data from the client.
printf("receive data");
iReturn = recv (ClientSock, szServerA, sizeof (szServerA), 0);
// Check if there is any data received. If there is, display it.
if (iReturn == SOCKET_ERROR)
{
ErrOut();
}
else if (iReturn == 0)
{
printf("Finished receiving data\n");
}
else
{
printf("Received From Client:%s\n",szServerA);
}
// Close the client and server sockets.
closesocket (ClientSock);
WSACleanup();
return 0;
}
这段代码不知怎么搞的,总是停在accept,客户端怎么也连接不上。
渴求各位高手给以指点!