如何把这两个函数用上?求解
程序代码:#define WIN32_LEAN_AND_MEAN
#include <WINSOCK2.H>
#include <windows.h>
#include <stdio.h>
#include "resource.h"
#define PORT 5150
#define MSGSIZE 1024
#pragma comment(lib, "ws2_32.lib")
void main();
LRESULT WINAPI DialogBoxProc(HWND hDlgWnd, UINT message,
WPARAM wParam, LPARAM lParam)
{
HWND hStaticWnd;
char szCount[20]="\0";
char szTitle[255]= "\0";
static int nCount1=0, nCount2=0, nCount3=0;
HWND hEditWnd1, hEditWnd2, hEditWnd3;
char szEdit1[255] = "", szEdit2[255] = "";
int x;
int wNotifyCode, wID;
main();
switch(message)
{
case WM_INITDIALOG:
return TRUE;
case WM_COMMAND:
break;
case WM_SYSCOMMAND:
if(wParam == SC_CLOSE)
{
EndDialog(hDlgWnd, 0);
return TRUE;
}
break;
default:
break;
}
return 0;
}
void main()
{
WSADATA wsaData;
SOCKET sListen;
SOCKET sClient;
SOCKADDR_IN local;//套接字地址
SOCKADDR_IN client;
char szMessage[MSGSIZE];
int ret;
int iaddrSize = sizeof(SOCKADDR_IN);
/*----------------------------------------------------
功能:
进程使用winsock库,用此函数做初始化。
参数:
0x0202;指定准备在应用程序中要使用的Winsock库的版本号。
wsaData:指向WSADATA结构的指针,得到Winsockt的实现细节。
返回值:
成功返回0,失败返非0
----------------------------------------------------*/
WSAStartup(0x0202, &wsaData);//
/*----------------------------------------------------
功能:
创建一个socket,并将此socket与特定传输层协议绑定。
参数:
af(IN):地址族定义,IP协议应该设定为AF_INET。
type(IN):要创建的socket的类型。
protocol(IN):指定传输层协议。
返回值:
成功返回0,失败返回INVALID_SOCKET。特定错误码,可以用WSAGetLastError()函数获取。
----------------------------------------------------*/
sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
local.sin_family = AF_INET;
local.sin_port = htons(PORT);
local.sin_addr.s_addr = htonl(INADDR_ANY);
/*----------------------------------------------------
功能:
将socket与一个本地地址绑定(IP地址和端口号)。
参数:
s(IN):socket描述符。
name(IN):本地地址。
namelen(IN):name参数的长度。
返回值:
成功返回0,失败返回SOCKET_ERROR。特定错误码,可以用WSAGetLastError()函数获取。
----------------------------------------------------*/
bind(sListen, (struct sockaddr *)&local, sizeof(SOCKADDR_IN));
/*----------------------------------------------------
功能:
设定一个socket到监听状态。
参数:
s(IN):socket描述符。
backlog(IN):指定等待连接队列的最大长度。
返回值:
成功返回0,失败返回SOCKET_ERROR。特定错误码,可以用WSAGetLastError()函数获取
----------------------------------------------------*/
listen(sListen, 1);
/*----------------------------------------------------
功能:
接受客户端连接,建立一个新的socket与客户端通信。
参数:
s(IN):处于监听状态的socket描述符。
addr(OUT):接收客户端的地址信息,设置为NULL表示不用输出此信息。
addrlen(OUT):客户端地址信息的长度。
返回值:
成功返回一个新的socket描述符用于与客户端通信,失败返回INVALID_SOCKET。特定错误码,可以用WSAGetLastError()函数获取。
----------------------------------------------------*/
sClient = accept(sListen, (struct sockaddr *)&client, &iaddrSize);
printf("Accepted client:%s:%d\n", inet_ntoa(client.sin_addr), ntohs(client.sin_port));
while (TRUE)
{
/*----------------------------------------------------
功能:
从socket接收数据。
参数:
s(IN):socket描述符。
buf(OUT):接收数据缓冲区。
len(IN):接收数据缓冲区的长度。
flags(IN):接收数据的执行方式,通常设为0。
返回值:
成功返回接收到的字节数,失败返回SOCKET_ERROR。特定错误码,可以用WSAGetLastError()函数获取。
----------------------------------------------------*/
ret = recv(sClient, szMessage, MSGSIZE, 0);
szMessage[ret] = '\0';
printf("Received [%d bytes]: '%s'\n", ret, szMessage);
}
return 0;
}
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
DialogBox(hInstance,MAKEINTRESOURCE(IDD_DIALOG1),NULL,(DLGPROC)DialogBoxProc);
return 0;
}
以上函数!我怎么样才能用在一起!就是windowsapi创建了一个窗口,然后main函数是主要运行的程序,我就不知道怎么用得上!细节我会完善,可是这大体上都搞不懂,根本无法完善!









