1.SOCKET客户端
void CTcpDlg::OnButtonConnect()
{
// TODO: Add your control notification handler code here
if(one_pthread==0)
{one_pthread++;
SOCKADDR_IN addsock;
DWORD ip;
((CIPAddressCtrl *)GetDlgItem(IDC_IPADDRESS1))->GetAddress(ip);
client_1=socket(AF_INET,SOCK_STREAM,0);
if(client_1==INVALID_SOCKET)
{MessageBox("创建套接字失败");}
addsock.sin_family=AF_INET;
addsock.sin_port=htons(3332);
addsock.sin_addr.S_un.S_addr=htonl(ip);
int con =connect(client_1,(SOCKADDR *)&addsock,sizeof(SOCKADDR));
if(con==WSAECONNREFUSED)
MessageBox("开发板无监听端口程序");
if(con==WSAETIMEDOUT)
MessageBox("连接失败");
info *song=new info;
song->hwnd=m_hWnd;
song->sock=client_1;
song->jpginfo_pt=&getjpg_info;
HANDLE pth=CreateThread(NULL,0,ss,(LPVOID)song,0,NULL);
CloseHandle(pth);
control_sock_init(ip);
}
}
void CTcpDlg::control_sock_init(DWORD ip)
{
control_sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
SOCKADDR_IN sa;
sa.sin_family=AF_INET;
sa.sin_port=htons(3333);
sa.sin_addr.S_un.S_addr=htonl(ip);
if(connect(control_sock,(SOCKADDR *)&sa,sizeof(sa))==SOCKET_ERROR)
{
MessageBox("连接失败");
}
else MessageBox("连接小车成功");
}
DWORD WINAPI CTcpDlg::ss(LPVOID ll)
{ int getjpg_name=0;
long sum,m;
info * in=(info *)ll;
HWND hwnd=in->hwnd;
SOCKET sock=in->sock;
int * get_jpg=in->jpginfo_pt;
char buffer[30000];
FILE * fp;
while(TRUE)
{
memset(buffer,0,30000);
sum=recv(sock,buffer,30000,0);
while(TRUE)
{
if(sum>=30000) break;
m=recv(sock,&(buffer[sum]),30000-sum,0);
sum=sum+m;
}
fp=fopen("D:\\temp.jpg","wb");
fwrite(buffer,30000,1,fp);
fclose(fp);
::PostMessage(hwnd,WM_SONG,0,0);
Sleep(150);
getjpg
if((*get_jpg)==1)
{
(*get_jpg)=0;
FILE * getjpg_file;
char name[10];
sprintf(name,"%d.jpg",getjpg_name++);
getjpg_file=fopen(name,"wb");
fwrite(buffer,30000,1,getjpg_file);
fclose(getjpg_file);
}
/
}
return 1;
}
void CTcpDlg::song()
{
Graphics graphics(GetDC()->m_hDC);
Image image(L"D:\\temp.jpg");
graphics.DrawImage(&image,0,0);
}
struct info
{
HWND hwnd;
SOCKET sock;
int * jpginfo_pt;
};