#include<winsock2.h>
#include<WINDOWS.H>
//#include <stdio.h>
#include"resource.h"
#define WM_SOCKET WM_USER+1
#pragma comment(lib,"WS2_32.lib")
int starservice();
BOOL CALLBACK TCPSeverProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
HWND hDlgx;
char outtext[100]="\0",intext[150]="\0",in[200]="\0";
SOCKET s=INVALID_SOCKET,sc=INVALID_SOCKET;
struct sockaddr_in sin,remoteAddr;
char charport[10];
long intport;
int WINAPI WinMain(HINSTANCE hinstance,
HINSTANCE hPrevinstance,
PSTR szCmdLine,
int iCmdShow)
{
DialogBox(hinstance,TEXT("TCPSever"),NULL,TCPSeverProc);
return 0;
}
BOOL CALLBACK TCPSeverProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam)
{ RECT rect;
HDC hdc;
PAINTSTRUCT ps;
char T[100];
int nAddrlen;
HWND hEditcontrol,hStatic;
// int n;
// char nc[50];
switch(message)
{ case WM_INITDIALOG:
hDlgx=hDlg;
return TRUE;
case WM_PAINT:
InvalidateRect(hDlg,NULL,TRUE);
hdc=BeginPaint(hDlg,&ps);
GetClientRect(hDlg,&rect);
DrawText(hdc,in,-1,&rect,DT_SINGLELINE|DT_LEFT|DT_VCENTER);
EndPaint(hDlg,&ps);
return TRUE;
case WM_SOCKET:
switch(LOWORD(lParam))
{case FD_ACCEPT:
nAddrlen=sizeof(remoteAddr);
sc=accept(s,(SOCKADDR*)&remoteAddr,&nAddrlen);
if(sc==INVALID_SOCKET)
MessageBox(NULL,"连接客户端失败","提示",0);
//else
//{sprintf(T,"与远方地址为:%s的客户端,连接成功!",inet_ntoa(remoteAddr.sin_addr));
// MessageBox( hDlg,T,"提示",0);
// }
break;
case FD_READ:
recv(sc,intext,150,0);
sprintf(in," 【From Client】:%s",intext);
InvalidateRect(hDlg,NULL,TRUE);
UpdateWindow(hDlg);
// MessageBox(hDlg,intext,"intext内容",0);
// sprintf(nc," 从缓冲区拷贝的数据个数:%d",n);
//MessageBox(hDlg,nc,"从缓冲区拷贝的数据个数",0);
break;
case FD_WRITE:
break;
case FD_CONNECT:
break;
case FD_CLOSE:
closesocket(sc);
closesocket(s);
s=INVALID_SOCKET;
sc=INVALID_SOCKET;
WSACleanup();
EnableWindow(GetDlgItem(hDlg,IDC_BUTTON1),TRUE);
EnableWindow(GetDlgItem(hDlg,IDC_BUTTON2),FALSE);
EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),TRUE);
strcpy(in,"\0");
InvalidateRect(hDlg,NULL,TRUE);
UpdateWindow(hDlg);
break;
}
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{ case IDOK:
case IDCANCEL:
closesocket(sc);
closesocket(s);
s=INVALID_SOCKET;
sc=INVALID_SOCKET;
WSACleanup();
EndDialog(hDlg,0);
return TRUE;
case IDC_BUTTON1:
// MessageBox(hDlg,"启动服务","提示",0);
GetWindowText(GetDlgItem(hDlg,IDC_EDIT2),charport,10);
intport=atoi(charport);
// sprintf(T,"端口设置:%d",intport);
// MessageBox(hDlg,T,"提示",0);
if(starservice()==1)
{EnableWindow(GetDlgItem(hDlg,IDC_BUTTON1),FALSE);
EnableWindow(GetDlgItem(hDlg,IDC_BUTTON2),TRUE);
EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),FALSE);
}
return TRUE;
case IDC_BUTTON2:
closesocket(sc);
closesocket(s);
s=INVALID_SOCKET;
sc=INVALID_SOCKET;
WSACleanup();
EnableWindow(GetDlgItem(hDlg,IDC_BUTTON1),TRUE);
EnableWindow(GetDlgItem(hDlg,IDC_BUTTON2),FALSE);
EnableWindow(GetDlgItem(hDlg,IDC_EDIT2),TRUE);
strcpy(in,"\0");
InvalidateRect(hDlg,NULL,TRUE);
UpdateWindow(hDlg);
MessageBox(hDlg,"服务器停止服务","提示",0);
return TRUE;
case IDC_BUTTON3:
hEditcontrol=GetDlgItem(hDlg,IDC_EDIT1);
GetWindowText(hEditcontrol,outtext,95);
SetWindowText(hEditcontrol,"");
send(sc,outtext,sizeof(outtext),0);
//MessageBox(NULL,outtext,"tishi",0);
return TRUE;
}
}
return FALSE;
}
//创建,关联,绑定,设置非阻塞,监听。
int starservice()
{
int n,nresc;
//char T[100];
WSADATA wsaData;
WORD sockVersion=MAKEWORD(2,0);
WSAStartup(sockVersion,&wsaData);
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(s==INVALID_SOCKET)
{MessageBox(hDlgx,"创建套接字失败!","错误",0);
WSACleanup();
return 0;
}
//else
//MessageBox(NULL,"创建套接字成功!","提示",0);
sin.sin_family=AF_INET;
sin.sin_port=htons(intport);
//sprintf(T,"端口设置:%d",intport); //这两条语句用来测试端口设置是否正确。
//MessageBox(hDlgx,T,"提示",0);
sin.sin_addr.S_un.S_addr=INADDR_ANY;//inet_addr("172.22.53.166");
if(bind(s,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR)
{MessageBox(hDlgx,"服务器套接字绑定失败!","错误",0);
WSACleanup();
return 0;
}
//else
//MessageBox(hDlgx,"服务器套接字绑定成功!","提示",0);
WSAAsyncSelect(s,hDlgx,WM_SOCKET,FD_ACCEPT|FD_READ|FD_WRITE|FD_CLOSE);
if(listen(s,3)!=-1)
{
MessageBox(hDlgx,"服务器启动成功!","正确",0);
return 1;
}
else
return 0;
}
没有合适的资源?快使用搜索试试~ 我知道了~
用C语言SDK方式编写的采用TCP/IP协议的通信程序
共53个文件
smf:6个
pch:4个
pdb:4个
4星 · 超过85%的资源 需积分: 50 78 下载量 162 浏览量
2010-01-06
10:57:37
上传
评论 1
收藏 4.47MB RAR 举报
温馨提示
用C语言SDK方式编写的采用TCP/IP协议的通信程序
资源推荐
资源详情
资源评论
收起资源包目录
TCP通信.rar (53个子文件)
TCP通信
TCPClient
TCPclient.cpp 5KB
TCPClent.dsw 524B
Release
vc60.idb 33KB
TCPClent.pch 2.71MB
corona.smf 71KB
TCPClent.opt 53KB
TCPClient.aps 32KB
AlphaOS.smf 73KB
SkinMagicTrial.dll 412KB
SkinMagicLib.h 25KB
TCPClent.ncb 57KB
TCPClent.dsp 4KB
BlueHorn.smf 44KB
TCPClent.plg 784B
resource.h 781B
SkinMagicTrial.lib 21KB
Debug
TCPclient.obj 23KB
TCPSever.obj 17KB
TCPClent.exe 176KB
TCPClient.res 568B
SkinMagicTrial.dll 412KB
TCPClent.ilk 203KB
vc60.idb 177KB
TCPClent.pch 3.79MB
TCPClent.pdb 449KB
vc60.pdb 92KB
TCPClient.rc 3KB
TCPSever
TCPSever.opt 53KB
Release
vc60.idb 33KB
TCPSever.pch 2.71MB
corona.smf 71KB
TCPSever.rc 3KB
AlphaOS.smf 73KB
SkinMagicTrial.dll 412KB
SkinMagicLib.h 25KB
TCPSever.ncb 57KB
TCPSever.dsw 524B
BlueHorn.smf 44KB
TCPSever.dsp 4KB
TCPSever.c 5KB
resource.h 686B
TCPSever.plg 782B
SkinMagicTrial.lib 21KB
Debug
TCPSever.obj 19KB
rr.obj 24KB
TCPSever.pdb 465KB
TCPSever.ilk 223KB
vc60.idb 177KB
vc60.pdb 92KB
TCPSever.res 460B
TCPSever.exe 176KB
TCPSever.pch 2.71MB
TCPSever.aps 32KB
共 53 条
- 1
shibingshi
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页