基于udp協(xié)議采用winsock構(gòu)建網(wǎng)絡聊天室_第1頁
基于udp協(xié)議采用winsock構(gòu)建網(wǎng)絡聊天室_第2頁
基于udp協(xié)議采用winsock構(gòu)建網(wǎng)絡聊天室_第3頁
基于udp協(xié)議采用winsock構(gòu)建網(wǎng)絡聊天室_第4頁
基于udp協(xié)議采用winsock構(gòu)建網(wǎng)絡聊天室_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

摘要基本的網(wǎng)絡編程都是建立在Winsock基礎上的,作為網(wǎng)絡編程接口,Winsock屏蔽了網(wǎng)絡底層的復雜的協(xié)議和數(shù)據(jù)結(jié)構(gòu),因此,在Win32平臺上,訪問眾多的基層網(wǎng)絡協(xié)議,Winsock是首選接口。用Winsock構(gòu)建一個網(wǎng)絡聊天室,有兩種基本的方式:數(shù)據(jù)報方式和流方式,即面向無連接的數(shù)據(jù)報方式和面向連接的流方式,對應的協(xié)議分別為UDP(UserDatagramProtocol)協(xié)議和TCP(TransportControlProtocol))協(xié)議。本次我們設計的網(wǎng)絡聊天室是基于UDP協(xié)議的無連接方式,軟件編程則主要使用Winsock提供的API函數(shù)。關鍵字:網(wǎng)絡編程UDP協(xié)議API函數(shù)1設計目的與功能要求1.1設計目的(1)編寫一個簡單的C/S模式的網(wǎng)絡聊天室軟件(2)進一步掌握利用VisualC++進行程序設計的能力;(3)進一步理解和運用面向?qū)ο蟪绦蛟O計的思想和方法;(4)初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法;(5)理解Windows程序的運行過程。1.2網(wǎng)絡聊天室功能要求 網(wǎng)絡聊天室系統(tǒng)設計完成后,我們可以在一臺計算機上運行服務端程序,然后在另一網(wǎng)絡的其他計算機上運行客戶端程序,登錄到服務器上,各個客戶之間就可以聊天,或者直接在一臺計算機上同時運行服務器端和客戶端,然后兩者之間進行通信。1.2.1服務器端功能要求(1)初始化socket,創(chuàng)建服務器端。(2)維護一個鏈表,保存所有用戶的IP地址、端口信息。(3)接受用戶傳送來的聊天信息,然后向鏈表中的所用用戶轉(zhuǎn)發(fā)。(4)接受用戶傳送來的連接判斷命令,并向用戶發(fā)出響應命令。1.2.2客戶端功能要求 客戶端界面上的兩個文本框,一個用于顯示接受的聊天信息,一個用來接受用戶輸入的聊天信息。當按下“發(fā)送”按鈕時將信息發(fā)送給服務器。2設計原理本次設計的題目是實現(xiàn)一個簡單的C/S模式的網(wǎng)絡聊天室,基于UDP協(xié)議,是不可靠的面向無連接的方式。設計的基本原理也就是UDP編程原理。UDP協(xié)議是一個簡單的面向數(shù)據(jù)報的傳輸層協(xié)議,又叫用戶數(shù)據(jù)報協(xié)議。它提供了無連接的、不可靠的數(shù)據(jù)傳輸服務。無連接是指它不像TCP協(xié)議那樣在通信前先于對方建立連接以確定對方的狀態(tài)。不可靠是指它直接安裝指定的IP地址和端口號將數(shù)據(jù)包發(fā)送出去,如果對方不在線的話數(shù)據(jù)就可能丟失。UDP協(xié)議編程原理如下:2.1服務器端原理(1)創(chuàng)建套節(jié)字(socket);(2)綁定IP地址和端口(bind);(3)收發(fā)數(shù)據(jù)(sendto/recvfrom);(4)關閉連接(closesocket)。2.2客戶端原理(1)創(chuàng)建套節(jié)字(socket);(2)收發(fā)數(shù)據(jù)(sendto/recvfrom);(3)關閉連接(closesocket)。UDP協(xié)議用于發(fā)送和接收數(shù)據(jù)的函數(shù)是sendto和recvfrom。它們的原形如下:intsendto(SOCKETs,//用于發(fā)送數(shù)據(jù)的套節(jié)字ConstcharFAR*buf,//指向發(fā)送數(shù)據(jù)的緩沖區(qū)intlen,//要發(fā)送數(shù)據(jù)的長度intflags,//一般指定為0//指向一個包含目標地址和端口號的sockaddr_in結(jié)構(gòu)conststructsockaddr*to,inttolen);//為socket_in的結(jié)構(gòu)大小同樣UDP協(xié)議接收數(shù)據(jù)也需要知道通信對端的地址信息。intrecvfrom(SOCKETs,charFAR*buf,intlen,intflags,structsockaddrFAR*from,intFAR*fromlen);2.3網(wǎng)絡聊天室設計流程該程序設計使用WindowsSockets編程。在數(shù)據(jù)傳輸協(xié)議中,我們使用UDP協(xié)議,UDP協(xié)議是無連接的協(xié)議,在服務器端不調(diào)用listen函數(shù)進行監(jiān)聽,也不調(diào)用accept函數(shù)建立連接,其操作流程圖如下圖3-2所示:首先,用socket函數(shù)建立套接字,然后根據(jù)本地的IP進行綁定,然后就可以通過使用send函數(shù)和reve函數(shù)來進行數(shù)據(jù)的發(fā)送和接收了。利用C語言編寫Windows應用程序有兩種方式:一種是WindowsC編程方式,另一種是VisualC++編程方式。在一般情況下,VisualC++編程方式編寫的程序源代碼量小、開發(fā)時的工作量小、工作難度也較小,但編譯后的代碼量較大,運行速度略低;而WindowsC編程方式編寫的程序源代碼量雖然較大,但可執(zhí)行代碼效率高。隨著技術(shù)的進步,VisualC++編程方式已被廣泛采用,但象網(wǎng)絡編程等一些對速度要求高、對硬件操作較多的程序,大多數(shù)還是用WindowsC編程方式開發(fā)的。另外,學習WindowsC程序設計,還有助于更深入地了解Windows的內(nèi)幕和WindowsAPI。3實現(xiàn)過程設計數(shù)據(jù)報方式又稱無連接方式,對應的是UDP(UserDatagramProtocol)協(xié)議。這種方式不提供數(shù)據(jù)無錯保證,數(shù)據(jù)可能丟失或重復并且接收順序混亂,后發(fā)出的報文可能會先收到,并且報文的長度是有限制的;不過,由于取消了重發(fā)校驗機制,能夠達到較高的通信速率,可以用于對數(shù)據(jù)可靠性要求不高的通信,如實時的語音、圖像傳送和廣播消息等。和C語言一樣,函數(shù)是WindowsC編程的最基本的單位。不過,WindowsC主要使用API函數(shù),而網(wǎng)絡編程則主要使用Winsock提供的API函數(shù)。因此,在該網(wǎng)絡聊天室的設計中,我們將采用Winsock編程,而Winsock編程的一般過程是比較固定的。3.1服務器端程序設計3.1.1Winsock庫德裝入、初始化和釋放所以的Winsock函數(shù)都是從WS2_32.DLL庫導出的,VC++在默認的情況下并沒有連接到該庫,如果想使用WinsockAPI,就必須包含相應的庫文件。#pragmacomment(lib,“wsock32.lib”)每一個使用winsock的應用程序,都必須進行WSAStart函數(shù)調(diào)用,并且只有在調(diào)用成功之后才能使用其它的winsock網(wǎng)絡操作函數(shù)。WSAstartup必須是應用程序首先調(diào)用的Winsock函數(shù)。它允許應用程序指定所需的WindowsSocketsAPI的版本,獲取特定Winsock實現(xiàn)的詳細信息。僅當這個函數(shù)成功執(zhí)行之后,應用程序才能調(diào)用其他的WinsockAPI函數(shù)。WSAStartup()函數(shù)原形為:intWSAStartup(//應用程序支持的最高Winsock庫版本,高字節(jié)為此版本號,低字節(jié)為主版本號WORDwVresionRequested//一個指向WSADATA結(jié)構(gòu)的指針,它用來返回DLL庫德詳細信息。LPWSADATAlpWSAData);每一個對WSAStartup的調(diào)用必須對應一個對WSAClearnup的調(diào)用,這個函數(shù)釋放Winsock庫。intWSAClearnup(void);該過程的核心程序代碼如下:WORDVersionRequested=MAKEWORD(1,1); WSADATAwsaData; WSAStartup(VersionRequested,&wsaData); //啟動winsock服務 if(wsaData.wVersion!=VersionRequested){MessageBox(NULL,"FirstFailed!","Error",0); WSACleanup();}3.1.2套節(jié)字的創(chuàng)建和關閉Winsock網(wǎng)絡通信的第一步通常就是調(diào)用socket()函數(shù)。所有的通信在建立之前都有要創(chuàng)建一個Socket。該函數(shù)的功能與文件操作中的fopen()類似,返回值是由Winsock定義的一種數(shù)據(jù)類型SOCKET,它實際是一個整型數(shù)據(jù),是Socket創(chuàng)建成功時,Windows分配給程序的Socket編號,后面調(diào)用傳輸函數(shù)時,可以把它像文件指針樣引用。使用套節(jié)字之前,必須調(diào)用socket函數(shù)創(chuàng)建一個套節(jié)字對象,此函數(shù)調(diào)用成功將返回套節(jié)字的句柄。Socket()函數(shù)的原形如下:SOCKETsocket(intaf,//用來指定套節(jié)字使用的地址格式,WinSock中只支持AF_INETinttype,//用來指定套節(jié)字的類型//配合type參數(shù)使用,用來指定使用的協(xié)議類型,可以是IPPROTO_TCP等intprotocol);type參數(shù)用來指定套節(jié)字的類型。套節(jié)字有流套節(jié)字、數(shù)據(jù)報套節(jié)字和原始套節(jié)字等,下面是常見的幾種套節(jié)字類型定義:SOCK_STREAM流套節(jié)字,使用TCP協(xié)議提供有連接的可靠的傳說SOCK_DGRAM數(shù)據(jù)報套節(jié)字,使用UDP協(xié)議提供無連接的不可靠傳輸SOCK_RAW原始套節(jié)字,Winsock接口并不使用某種特定的協(xié)議去封裝它,而是有程序的自行處理數(shù)據(jù)報以及協(xié)議首部。當type參數(shù)指定為SOCK_STREAM和SOCK_DGRAM時,系統(tǒng)已經(jīng)明確確定使用UDP協(xié)議來工作,所以protocol參數(shù)可以指定為0。函數(shù)執(zhí)行失敗返回INVYLID_SOCKET(即-1),可以通過調(diào)用WSAGetLasError取得錯誤代碼。當不使用socket創(chuàng)建的套節(jié)字時,應該調(diào)用closesocket函數(shù)將它關閉。如果沒有錯誤發(fā)生,函數(shù)返回0,否則返回SOCKET_ERROR。函數(shù)用法如下:intclosesocket(SOCKETs);//函數(shù)唯一的參數(shù)就是關閉的套節(jié)字的句柄該過程的核心程序代碼如下:if(ServerSock!=0) { closesocket(ServerSock);//關閉套接字 ServerSock=0; } if(ServerSock==0) { //創(chuàng)建套接字對象,數(shù)據(jù)報套接字,SOCK_STREAM為流套接字 //建立套接字失敗 if((ServerSock=socket(AF_INET,SOCK_DGRAM,0))==SOCKET_ERROR) MessageBox(NULL,"SetSocketFailed!","Error",0); }3.1.3綁定套節(jié)字到指定的IP地址和端口號成功創(chuàng)建了Socket之后,就應該選定通信的對象。首先是自己的程序要與網(wǎng)上的哪臺計算機通話;其次,在多任務的系統(tǒng)下,該臺計算機上可能會有幾個程序在工作,必須指出要與哪個程序通信。前者可以通過IP地址來確定,而后者則由端口號來確定的。為套節(jié)字關聯(lián)本地地址的函數(shù)是bind,函數(shù)原形如下: intbind(SOCKETs,//套節(jié)字句柄conststructsockaddr*name,//要關聯(lián)的本地地址intnamelen);//地址的長度bind函數(shù)用在沒有建立連接的套節(jié)字上,它的作用是綁定面向連接的或者無連接的套節(jié)字。當一個套節(jié)字被socket函數(shù)創(chuàng)建之后,它存在于指定的地址家族里,但是它是名命名的。bind函數(shù)通過安排一個本地名稱到未命名的socket建立此socket的本地關聯(lián)。本地名稱包含3個部分:主機地址、協(xié)議號和端口號。將套節(jié)字與IP地址和端口號綁定的核心程序代碼:ServerAddr.sin_family=AF_INET; //系統(tǒng)自動使用當前主機配置的所有IP地址 ServerAddr.sin_addr.S_un.S_addr=INADDR_ANY; serPort=GetDlgItemInt(hDlg,IDC_Sport,&serErr,TRUE); ServerAddr.sin_port=htons((u_short)serPort);//bind()綁定套接字在指定的端口 if(bind(ServerSock,(LPSOCKADDR)&ServerAddr,sizeof(ServerAddr))==SOCKET_ERROR) MessageBox(NULL,"Bind return1;3.1.4設置套節(jié)字進入監(jiān)聽狀態(tài)listen函數(shù)置套節(jié)字進入監(jiān)聽狀態(tài)。intlisten(SOCKETs,//套節(jié)字句柄intbacklog);//監(jiān)聽隊列中允許保持的尚未處理的最大連接數(shù)量為了接受連接,首先使用socket函數(shù)創(chuàng)建一個套節(jié)字,然后使用bind函數(shù)綁定它到一個本地地址,再使用listen函數(shù)為到達的連接指定一個backlog,最后使用accept接受請求的連接。listen僅應用在支持連接的套節(jié)字上,如SOCK_STREAM類型。函數(shù)成功執(zhí)行后,套節(jié)字s進入了被動模式,到來的連接會被通知,排隊等接受處理。在同一時間處理對個連接請求的服務器通常使用listen函數(shù):如果一個連接請求到達,并且排隊已滿,客戶端將接收WSAECONNREFUSED錯誤。在基于UDP協(xié)議的網(wǎng)絡聊天室設計中,不需要listen函數(shù),而這里的listen監(jiān)聽知識綁定一個端口。其核心代碼如下:ServerSocket=socket(AF_INET,SOCK_DGRAM,0); if(ServerSocket==INVALID_SOCKET) {MessageBox(NULL,”socket創(chuàng)建失敗”,”Error”,0); returnfalse; } srv.sin_family=AF_INET; srv.sin_addr.s_addr=htonl(INADDR_ANY); //任何地址 srv.sin_port=htons(PortNum); if(bind(ServerSocket,(structsockaddr*)&srv,sizeof(srv))!=0) {MessageBox(NULL,”socket綁定端口失敗”,”Error”,0); closesocket(ListenSocket); returnfalse; }3.1.5收發(fā)數(shù)據(jù)對數(shù)據(jù)報套節(jié)字來說,一般使用sendto和recvfrom函數(shù)來收發(fā)數(shù)據(jù)。在這次網(wǎng)絡聊天室的設計中,我們采用服務器只接收數(shù)據(jù)而不進行轉(zhuǎn)發(fā)數(shù)據(jù),從而簡化了部分任務,不過其核心功能還是實現(xiàn)的很好。recvfrom()/sendto()的函數(shù)原型如下:intrecvfrom(SOCKETs,charFAR*buf,intlen,intflags,structsockaddrFAR*from,intFAR*fromlen);intsendto(SOCKETs,constcharFAR*buf,intlen,intflags,conststructsockaddrFAR*to,inttolen);使用說明:s<輸入>:是連接用的socket。 buf、len<輸入>:發(fā)送或接收的數(shù)據(jù)包字符串的地址和長度。 flags<輸入>:一般取0。from、fromlen/to、tolen<輸入>:含義和用法與bind()中的相同,分別表示接收和發(fā)送數(shù)據(jù)的對象。實現(xiàn)該功能的核心程序代碼入下:caseIDC_receive://接受按鈕的ID號 //接受數(shù)據(jù)的對象 recvfrom(ServerSock,Output,256,0,(LPSOCKADDR)&ServerAddr,&fromlen); SetDlgItemText(hDlg,IDC_Sedit1,Output); return1;3.1.6關閉連接這個模塊主要實現(xiàn)的功能包括關閉由socket創(chuàng)建的數(shù)據(jù)報套節(jié)字、釋放Winsock庫和清除一個模態(tài)對話框,并使系統(tǒng)中止對對話框的任何處理。實現(xiàn)這幾個功能的函數(shù)為:closesocket()、WSACleanup()和EndDialog()函數(shù)。實現(xiàn)這些功能的程序代碼如下:caseIDC_closeserver: closesocket(ServerSock); WSACleanup();//釋放Winsock庫//清除一個模態(tài)對話框,并使系統(tǒng)中止對對話框的任何處理 EndDialog(hDlg,TRUE); return1;3.2客戶端程序設計客戶端程序的設計思路和服務器端有很大的相似之處,只不過客戶端不需要綁定IP地址和端口號,也不需要進行監(jiān)聽功能。所以,在總體設計上,比服務器端稍微簡單一點,與服務器的實現(xiàn)原理是相同的。客戶端程序的設計中也要由socket創(chuàng)建數(shù)據(jù)報套節(jié)字,還要用sendto()發(fā)送數(shù)據(jù),最后要關閉套節(jié)字,釋放Winsock庫。在客戶端,數(shù)據(jù)方式(UDP協(xié)議)構(gòu)建網(wǎng)絡聊天室程序設計中,Winsock庫德載入和初始化,創(chuàng)建套節(jié)字等功能和服務器端的完全相同,在這里就不再重復。不同之處在與客戶端要發(fā)送數(shù)據(jù)而不進行接收數(shù)據(jù)。3.2.1發(fā)送數(shù)據(jù)程序設計【函數(shù)原型】intsendto(SOCKETs,constcharFAR*buf,intlen,intflags,conststructsockaddrFAR*to,inttolen);【使用說明】s<輸入>:是連接用的socket。 buf、len<輸入>:發(fā)送或接收的數(shù)據(jù)包字符串的地址和長度。 flags<輸入>:一般取0。from、fromlen/to、tolen<輸入>:含義和用法與bind()中的相同,分別表示接收和發(fā)送數(shù)據(jù)的對象。實現(xiàn)發(fā)送數(shù)據(jù)的核心程序代碼如下:caseIDC_send://發(fā)送按鈕的ID號 ClientAddr.sin_family=AF_INET; ClientAddr.sin_addr.S_un.S_addr=inet_addr(IPStr); ClientPort=GetDlgItemInt(hDlg,IDC_Eport,&bErr,TRUE); ClientAddr.sin_port=htons((u_short)ClientPort); //使用指定的SocketFlags,將指定字節(jié)數(shù)的數(shù)據(jù)發(fā)送到指定的終結(jié)點 sendto(ClientSocket,InputText,256,0,(LPSOCKADDR)&ClientAddr,sizeof(ClientAddr)); break;3.2.2幾個關鍵結(jié)構(gòu)體的介紹在整個基于UDP協(xié)議的網(wǎng)絡聊天室程序設計中,我們一直都在使用幾個比較重要的系統(tǒng)自定義的結(jié)構(gòu)體,我們正是在這些結(jié)構(gòu)體的基礎上進行程序設計,并最終完成網(wǎng)絡聊天室的設計。在這里主要介紹Sockaddr_in結(jié)構(gòu)體和IP地址sin_addr結(jié)構(gòu)體。 Sockaddr_in的定義如下:structsockaddr_in{

shortsin_family;

unsignedshortsin_port;

struct

in_addrsin_addr;

charsin_zero[8];};其中,sin_family是指一套地址族,它指定所要使用的通信協(xié)議,通常設為AF_INET;sin_port端口號;sin_addr是IP地址;而sin_zero[8]的作用,只是使該結(jié)構(gòu)的大小和SOCKADDR結(jié)構(gòu)大小相同。IP地址sin_addr結(jié)構(gòu)定義如下:structin_addr{union{struct{u_chars_b1,s_b2,s_b3,s_b4;}S_un_b;struct{u_shorts_w1,s_w2;}S_un_w;u_longS_addr; }S_un;};這樣,對于一個IP地址,例如“192.168.0.1”,就可以用以下三種方法賦給一個sockaddr結(jié)構(gòu)體(例如structsockaddr_inm_addr;):方法1:m_addr.sin_addr.S_un.S_un_b.s_b1=192;m_addr.sin_addr.S_un.S_un_b.s_b2=168;m_addr.sin_addr.S_un.S_un_b.s_b3=0;m_addr.sin_addr.S_un.S_un_b.s_b4=1;方法2:m_addr.sin_addr.S_un.S_un_w.s_w1=(168<<8)|192;m_addr.sin_addr.S_un.S_un_w.s_w2=(1<<8)|0;方法3:m_addr.sin_addr.S_un.S_addr=(1<<24)|(0<<16)|(168<<8)|192;為了更方便地賦值,winsock還為我們提供了一個函數(shù)inet_addr(),可以把用字符串表示的IP地址“192.168.0.1”直接賦給結(jié)構(gòu)體m_addr:char*IP_String=”192.168.0.1”;m_addr.sin_addr.S_un.S_addr=inet_addr(IP_String);4程序界面設計4.1服務器端界面設計在服務器界面中,主要有一個接收數(shù)據(jù)的窗口,另外還需要建立服務器的按鈕、建立服務器的端口號窗口、關閉服務器的按鈕。設計服務器界面是在VistualC++6.0中進行的,關鍵之處在于各個窗口或者按鈕的ID號必須與程序中的ID號對應。設計完成后,服務器端的界面入下:圖4-1服務器端界面4.2客戶端界面設計在客戶端界面中,主要有一個發(fā)送消息的窗口,另外還包括發(fā)送按鈕、連接服務器的端口號、本地計算機的IP地址和關閉客戶端的按鈕。設計客戶端的界面基本過程和思路同設計服務器端的相同,開發(fā)工具都是VistualC++6.0??蛻舳说慕缑嫒缦拢簣D4-2客戶端界面5運行結(jié)果分析網(wǎng)絡聊天室設計的預期目的是能夠在同一臺計算機或者不同的計算機上進行通信。也就是說,當客戶端向服務器發(fā)送信息,當服務器端按下接收按鈕時,客戶端所發(fā)送的數(shù)據(jù)能夠被服務器接收到。而客戶端只負責發(fā)送數(shù)據(jù),不考慮所發(fā)數(shù)據(jù)是否能夠可靠的全部被服務器接收??蛻舳税l(fā)送一條消息,服務器就接收一條消息時,服務器端與客戶端的運行界面如下所示:客戶端發(fā)送多條消息,而服務器并沒有全部接收時,服務器端與客戶端的運行界面如下所示:不過當服務器按下接收按鈕時,有能夠接收到全部數(shù)據(jù)。6總結(jié)在實驗中,我們可以把這學期所學的理論知識和實踐聯(lián)系起來,在所要設計的程序中漸漸融會貫通。雖然我們對這些知識還運用得還不是很熟練,但是相信在現(xiàn)在和今后的學習中會得到更加深刻的掌握。本課程設計是設計一個程序,實現(xiàn)聊天功能,要求有客戶端和服務器端。通過設計我們進一步掌握利用VisualC++進行程序設計的能力;進一步理解和運用面向?qū)ο蟪绦蛟O計的思想和方法;初步掌握開發(fā)一個小型實用系統(tǒng)的基本方法;學會調(diào)試一個較長程序的基本方法。總的來說通過本次實驗,我學習到了許多東西,增強了一定的實踐能力。課程設計過程中我們一邊設計一邊探索,發(fā)現(xiàn)理論和實踐要充分地結(jié)合,是需要扎實的基本功的,這就表明學好基礎知識是理論付諸實踐的前提。參考文獻[1]CharlesPetzold

著,Windows程序設計.北京博彥科技發(fā)展譯.北京.北京大學出版社,2021[2]楊祥金,楊丹等.Windows程序設計教程.北京:清華大學出版社,2021[3]王艷平,張錚編著,Windows程序設計.北京;人民郵電出版社,2021

社會實踐報告系別:班級:學號:姓名:作為祖國未來的事業(yè)的繼承人,我們這些大學生應該及早樹立自己的歷史責任感,提高自己的社會適應能力。假期的社會實踐就是很好的鍛煉自己的機會。當下,掙錢早已不是打工的唯一目的,更多的人將其視為參加社會實踐、提高自身能力的機會。許多學校也積極鼓勵大學生多接觸社會、了解社會,一方面可以把學到的理論知識應用到實踐中去,提高各方面的能力;另一方面可以積累工作經(jīng)驗對日后的就業(yè)大有裨益。進行社會實踐,最理想的就是找到與本專業(yè)對口單位進行實習,從而提高自己的實戰(zhàn)水平,同時可以將課本知識在實踐中得到運用,從而更好的指導自己今后的學習。但是作為一名尚未畢業(yè)的大學生,由于本身具備的專業(yè)知識還十分的有限,所以我選擇了打散工作為第一次社會實踐的方式。目的在于熟悉社會。就職業(yè)本身而言,并無高低貴賤之分,存在即為合理。通過短短幾天的打工經(jīng)歷可以讓長期處于校園的我們對社會有一種更直觀的認識。實踐過程:自從走進了大學,就業(yè)問題就似乎總是圍繞在我們的身邊,成了說不完的話題。在現(xiàn)今社會,招聘會上的大字報都總寫著“有經(jīng)驗者優(yōu)先”,可還在校園里面的我們這班學子社會經(jīng)驗又會擁有多少呢?為了拓展自身的知識面,擴大與社會的接觸面,增加個人在社會競爭中的經(jīng)驗,鍛煉和提高自己的能力,以便在以后畢業(yè)后能真正真正走入社會,能夠適應國內(nèi)外的經(jīng)濟形勢的變化,并且能夠在生活和工作中很好地處理各方面的問題,我開始了我這個假期的社會實踐-走進天源休閑餐廳。實踐,就是把我們在學校所學的理論知識,運用到客觀實際中去,使自己所學的理論知識有用武之地。只學不實踐,那么所學的就等于零。理論應該與實踐相結(jié)合。另一方面,實踐可為以后找工作打基礎。通過這段時間的實習,學到一些在學校里學不到的東西。因為環(huán)境的不同,接觸的人與事不同,從中所學的東西自然就不一樣了。要學會從實踐中學習,從學習中實踐。而且在中國的經(jīng)濟飛速發(fā)展,又加入了世貿(mào),國內(nèi)外經(jīng)濟日趨變化,每天都不斷有新的東西涌現(xiàn),在擁有了越來越多的機會的同時,也有了更多的挑戰(zhàn),前天才剛學到的知識可能在今天就已經(jīng)被淘汰掉了,中國的經(jīng)濟越和外面接軌,對于人才的要求就會越來越高,我們不只要學好學校里所學到的知識,還要不斷從生活中,實踐中學其他知識,不斷地從各方面武裝自已,才能在競爭中突出自已,表現(xiàn)自已。在餐廳里,別人一眼就能把我人出是一名正在讀書的學生,我問他們?yōu)槭裁?他們總說從我的臉上就能看出來,也許沒有經(jīng)歷過社會的人都有我這種不知名遭遇吧!我并沒有因為我在他們面前沒有經(jīng)驗而退后,我相信我也能做的像他們一樣好.我的工作是在那做傳菜生,每天9點鐘-下午2點再從下午的4點-晚上8:30分上班,雖然時間長了點但,熱情而年輕的我并沒有絲毫的感到過累,我覺得這是一種激勵,明白了人生,感悟了生活,接觸了社會,了解了未來.在餐廳里雖然我是以傳菜為主,但我不時還要做一些工作以外的事情,有時要做一些清潔的工作,在學校里也許有老師分配說今天做些什么,明天做些什么,但在這里,不一定有人會告訴你這些,你必須自覺地去做,而且要盡自已的努力做到最好,一件工作的效率就會得到別人不同的評價。在學校,只有學習的氛圍,畢竟學校是學習的場所,每一個學生都在為取得更高的成績而努力。而這里是工作的場所,每個人都會為了獲得更多的報酬而努力,無論是學習還是工作,都存在著競爭,在競爭中就要不斷學習別人先進的地方,也要不斷學習別人怎樣做人,以提高自已的能力!記得老師曾經(jīng)說過大學是一個小社會,但我總覺得校園里總少不了那份純真,那份真誠,盡管是大學高校,學生還終歸保持著學生的身份。而走進企業(yè),接觸各種各樣的客戶、同事、上司等等,關系復雜,但我得去面對我從未面對過的一切。記得在我校舉行的招聘會上所反映出來的其中一個問題是,學生的實際操作能力與在校理論學習有一定的差距。在這次實踐中,這一點我感受很深。在學校,理論的學習很多,而且是多方面的,幾乎是面面俱到;而在實際工作中,可能會遇到書本上沒學到的,又可能是書本上的知識一點都用不上的情況?;蛟S工作中運用到的只是很簡單的問題,只要套公式似的就能完成一項任務。有時候我會埋怨,實際操作這么簡單,但為什么書本上的知識讓人學得這么吃力呢?這是社會與學校脫軌了嗎?也許老師是正確的,雖然大學生生活不像踏入社會,但是總算是社會的一個部分,這是不可否認的事實。但是有時也要感謝老師孜孜不倦地教導,有些問題有了有課堂上地認真消化,有平時作業(yè)作補充,我比一部人具有更高的起點,有了更多的知識層面去應付各種工作上的問題,作為一名大學生,應該懂得與社會上各方面的人交往,處理社會上所發(fā)生的各方面的事情,這就意味著大學生要注意到社會實踐,社會實踐必不可少。畢竟,很快我就不再是一名大學生,而是社會中的一分子,要與社會交流,為社會做貢獻。只懂得紙上談兵是遠遠不及的,以后的人生旅途是漫長的,為了鍛煉自己成為一名合格

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論