哈哈哈哈 终于完成了 ,NND 写了2天.
虽然完成了,虽然在机器上运行了,虽然能运行得很好,还虽然能发消息和能收消息.(说了怎么多虽然了肯定要有"但是"来衬托了),但是啊,还有很多我不满意的地方
第一:全局变量太多,都怪自己太懒,不愿意传参数,看看一般能设置为全局变量的都设置为全局变量了,懒啊!!下次一定改,不改是小狗!
第二:程序中没有面向对象的设计风格,虽然定义了几个模块,但是模块之间还是被那些全局变量给联系在一起,整个程序像一团乱麻,剪不断,理还乱,是离愁,恰似一江春水向东流,都说那里去,打住!!
第三:写作风格有待提高,这里的风格和很多因素有关 自己的能力,扎实的基础,良好的程序设计习惯,等等........这些都不是一日之功,虽然说不是一日之功,但是要天天注意自己的习惯,就拿那个命名法来说吧,老是忘记,一个字符串老是喜欢写成str 一般的写法是szStr;还有很多东西,比如那个什么指针的分配,在释放指针的空间后老是忘记P=NULL;操作了,.这些基本能力以后写程序的时候慢慢注意点,相信自己很快就能适应.
还有几个不足地方现在忘记了,下次想到了再写上来吧
谁要源码和我联系
客户端
//==================================头文件============================================
//#include <windows.h>
#include<Winsock2.h>
#include<stdio.h>
#include <process.h>
#include "resource.h"
//==========================定义消息====================================================
#define WM_RECVDATA WM_USER+100
//===========================库文件=====================================================
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "mswsock.lib")
//========================全局变量=====================================================
HWND g_DialogHwnd; //定义对话框句柄
SOCKET g_ClientSocket; //定义SOCKET对象用来连接服务器的套结字
char szTempBuffer[9999];
sockaddr_in addrSock;//服务器的地址
//SOCKET g_RecvSocket;//用来接收消息的套结字
//=========================全局函数=====================================================
BOOL CALLBACK DialogFun(HWND, UINT,WPARAM, LPARAM);
DWORD InitSocketVersion();//协议协商
BOOL InitSocket(); //创建并绑定socket
BOOL OnSend(); //用来发送消息的
void __cdecl ReceiveMessage(void*);//线程函数,用来接受消息的用来监听消息的
//======================================================================================
int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
MSG msg;
if(100==DialogBox(hinstance,"mydialog",NULL,(DLGPROC)DialogFun))
{
PostQuitMessage(WM_QUIT);
}
while (GetMessage(&msg, (HWND) NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//WSACleanup();
return msg.wParam;
UNREFERENCED_PARAMETER(lpCmdLine);
}
//====================================================================================
BOOL CALLBACK DialogFun(HWND dlghwnd, UINT message,WPARAM wParam, LPARAM lParam)
{
g_DialogHwnd=dlghwnd;
switch(message)
{
case WM_PAINT:
return FALSE;
case WM_INITDIALOG :
{
InitSocketVersion();
//InitSocket();
return FALSE;
}
case WM_RECVDATA: //使用接受到消息,并显示于对话框上
{
char str[9999];
GetDlgItemText(g_DialogHwnd,IDC_DISPLAYTEXT,str,9999);
sprintf(str,"%s/r/n%s",str,szTempBuffer);
SetDlgItemText(g_DialogHwnd,IDC_DISPLAYTEXT,str);
SetDlgItemText(g_DialogHwnd,IDC_SENDTEXT,"");
SetFocus