今日課程實做 Windows 上TCP/IP Server&Client 程式,茲分別先將兩支簡易程式貼上,稍後有空再貼上如 Echo Server 類的程式及講解說明。
課程內容尚有 Asynchronous Communication (主要以RS232非同步傳輸為主) 還未實做,這一部份需要 原本RS232傳輸技巧及Thread執行緒配合。
第二梯課程相關網址: http://edu.tcfst.org.tw/query_coursedetail.asp?courseidori=98C072
工業控制應用設計實務班:使用Visual C++ 程式語言 第一班6/3已額滿,第二班7/8開班,把握進修會!上過學員一致好評講師,不容錯過!! | |
98C072 | |
目前電腦技術的進步,使得原本以PLC為主的工控應用系統,已逐漸被PC-Based控制器所取代。PC-Based控制器是以工業電腦主機為基礎,藉其開放性的架構,可因需求來擴充介面板,如此便可將各種可能的應用,以介面卡的方式整合到工業PC的硬體架構中,再運用PC上不斷更新的軟硬體資源,即可降低系統研發的成本及提高資訊處理速度。自強基金會特地因應此一趨勢開設【工業控制應用設計實務班】,以工業PC技術為根基,講授適用於工業控制之運動控制器與程序控制器的程式技巧,讓工業控制應用系統能更具彈性、且易更動設計,並且容易與網路連接,同時可處理多資料量及整合更多的工控介面。 | |
上完此課程,您將獲得: 1. 如何有彈性且精準的運用PC架構來完成工業控制系統 2. 熟悉RS232及TCP/IP 網路傳輸控制技巧 3. 熟悉多執行緒(Multi-Thread)技術 4. 熟悉檔案IO及Asynchronous Input/Output技術 5. 熟悉工業控制程式之例外處理(Exception Handling)機制 6. 熟悉多工程式(Multi-Task)下之Share Memory與Memory Access技術 ★課程內容試用於Visual C相關版本 | |
1.C/C++語言重點技術講解 2.Exception Handling例外控制 3.Thread、Scheduling、Synchronization技術介紹 4.IO Input/Output、Asynchronous Input/Output 技術介紹 5.File and Directory Control 技術介紹 6.Memory Access、Memory-Mapped Files (Same as【Share Memory】) 技術介紹 7.Asynchronous Communication 技術介紹:包含 RS232傳輸控制機台 8.Socket網路傳輸技術介紹:包含TCP/UDP傳輸、Client/Server架構 9.整合範例: Multi Thread/Multi Asynchronous Communication and Socket Programming實作 | |
自強基金會 專業顧問 業界師資 ★具有開發ARM7(W90N740)、XSCALE PXA270開發板實務之設計經驗。 ★教學經驗超過12年以上,也是多家廠商聘請專業顧問 ★上過學員一致好評講師! ★具有開發ARM7(W90N740)、XSCALE PXA270開發板實務之設計經驗。 ★著作:C&C++完美經典、C&C++完美的演繹、JAVA完美經典、掌握JAVA設計之鑰、Java Phone 完美經典、 DELPHI 6 Object Pascal 完美經典、VISUAL BASIC 6完美經典 ★ 參觀江老師blog(內容很多資訊哦!請點此連結!) | |
7500元 | |
27 小時 | |
7/8~8/19,每週三晚上,18:50~21:50 ,共27小時 | |
台北分部(台北市金華街 110 號 3 樓) | |
財團法人自強工業科學基金會 | |
02-33223139分機2282 林小姐 hllin@tcfst.org.tw |
TCP/IP Server端程式碼:
/*
* TCP Server Simple AP for Windows
* Copyright (C) 2009 Yi-Hua, Chiang
* microcyh@seed.net.tw
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
SOCKET srvSocket, toClientSocket;
struct sockaddr_in serverAddr;
struct sockaddr_in toClientAddr;
wVersionRequested = MAKEWORD( 2, 0 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
return 0;
if( (srvSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ) ) == INVALID_SOCKET )
{
printf( "Create socket fail!!\r\n" );
return 0;
}
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons( 2222 );
serverAddr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
if( bind( srvSocket, (struct sockaddr*)&serverAddr , sizeof(serverAddr) ) == 0 )
{
if( listen ( srvSocket , 2) == 0 )
{
int receLen, toClientAddrLen; char *ReceBUF = (char *)malloc( 100 );
toClientAddrLen = sizeof( toClientAddr );
if( (toClientSocket=accept( srvSocket,(struct sockaddr*)&toClientAddr,
&toClientAddrLen )) != INVALID_SOCKET )
{ // toClientSocket = (struct sockaddr*)&toClientAddr
memset( ReceBUF, '\0', sizeof(ReceBUF) );
receLen = recv( toClientSocket, ReceBUF, 100, 0 );
ReceBUF[ receLen ] = '\0';
printf( "ReceBUF=%s\r\n" , ReceBUF );
closesocket( toClientSocket );
}
else
printf( "accept is fail for srvSocket \r\n" );
}
else
printf( "Setup listen is fail\r\n" );
}
else
printf( "Binding the srvSocket to serverAddr is fail\r\n" );
closesocket(srvSocket);
WSACleanup();
return 0;
}
TCP/IP Client端程式碼:
/*
* TCP Client Simple AP for Windows
* Copyright (C) 2009 Yi-Hua, Chiang
* microcyh@seed.net.tw
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock2.h>
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
SOCKET ClientSocket;
struct sockaddr_in ClientAddr;
wVersionRequested = MAKEWORD( 2, 0 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
return 0;
if( (ClientSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ) ) == INVALID_SOCKET )
{
printf( "Create socket fail!!\r\n" );
return 0;
}
ClientAddr.sin_family = AF_INET;
ClientAddr.sin_port = htons( 2222 );
ClientAddr.sin_addr.s_addr = inet_addr( "127.0.0.1" );
if( connect(ClientSocket,(struct sockaddr*)&ClientAddr, sizeof(ClientAddr) ) == 0 )
{
int sendLen;
char *sendStr = (char *)malloc( 15 );
memset( sendStr, '\0', sizeof(sendStr) );
strcpy( sendStr, "Hello TCFST\r\n" );
printf( "sendStr=%s\r\n", sendStr );
sendLen = send( ClientSocket, sendStr , strlen(sendStr) , 0 );
}
else
printf( "connect to srvSocket is fail\r\n" );
closesocket(ClientSocket);
WSACleanup();
return 0;
}
沒有留言:
張貼留言