資源簡介
實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計
1、實(shí)驗(yàn)?zāi)康呐c要求:
(1)初步掌握TCP和UDP方式的網(wǎng)絡(luò)編程模式。
(2)能運(yùn)用Winsock提供的API函數(shù)接口進(jìn)行網(wǎng)絡(luò)程序的編寫。

代碼片段和文件信息
#include?
#include?“winsock2.h“
//winsock?2.2?library
#pragma?comment(lib“ws2_32.lib“)
?
#define?PORT??8888
#define?ADDR??“127.0.0.1“
int?main(int?argc?char*?argv[])
{
WSADATA wsock;
SOCKET?listensocketnewconnection;
SOCKADDR_IN??????????serAddrcliAddr;
int??????????????????cliAddrLen=sizeof(cliAddr);
int??????????????????nRet=0;
char?????????????????buf[100];
//初始化Winsock?2.2
printf(“\nInitialising?Winsock...\n“);
if?(WSAStartup(MAKEWORD(22)&wsock)?!=?0)
{
fprintf(stderr“WSAStartup()?failed?%d\n?WSAGetLastError()“);
????????exit(0);?
}?
printf(“Initialised?successfully.\n“);
//創(chuàng)建監(jiān)聽Socket
printf(“\nCreating?TCP?Socket...\n“);
if?((listensocket?=?socket(AF_INET?SOCK_STREAM?IPPROTO_TCP))?
==?INVALID_SOCKET)
{
printf(“Creation?of?socket?failed?%d\n“?WSAGetLastError());
WSACleanup();
return?0;
}
printf(“TCP?Socket?Created?successfully.\n“);
//設(shè)置SOCKADDR_IN地址結(jié)構(gòu)
serAddr.sin_family?=?AF_INET;
serAddr.sin_port?=?htons(PORT);????
//???serAddr.sin_addr.s_addr?=?INADDR_ANY;
serAddr.sin_addr.s_addr?=?inet_addr(ADDR);
//綁定套接字
if?(bind(listensocket?(SOCKADDR?*)&serAddr
???sizeof(serAddr))==?SOCKET_ERROR)
{
printf(“bind?failed?with?error?%d\n“?WSAGetLastError());
closesocket(listensocket);
WSACleanup();
return?0;
}
//監(jiān)聽連接
if?(listen(listensocket?5)?==?SOCKET_ERROR)
{
printf(“l(fā)isten?failed?with?error?%d\n“?WSAGetLastError());
closesocket(listensocket);
WSACleanup();
return?0;
}?
printf(“Waiting?for?a?connection?on?port?%d.\n“?PORT);
//接受連接
if?((newconnection?=?accept(listensocket?(SOCKADDR?*)?&cliAddr
&cliAddrLen))?==?INVALID_SOCKET)
{
printf(“accept?failed?with?error?%d\n“?WSAGetLastError());
closesocket(listensocket);
WSACleanup();
return?0;
}
printf(“successfully?got?a?connection?from?%s:%d.\n“
inet_ntoa(cliAddr.sin_addr)?ntohs(cliAddr.sin_port));
//此時可以繼續(xù)監(jiān)聽新的連接,或者停止監(jiān)聽進(jìn)行數(shù)據(jù)收發(fā)
closesocket(listensocket);
printf(“Waiting?to?receive?data...\n“);
memset(buf0sizeof(buf));
for(int?i=0;;i++)
{
if?((nRet?=?recv(newconnection?buf?sizeof(buf)?0))?
==?SOCKET_ERROR)
{
printf(“recv?failed?with?error?%d\n“?WSAGetLastError());
closesocket(newconnection);
WSACleanup();
return?0;
}
//顯示接收到的數(shù)據(jù)
printf(buf);
printf(“\n“);
//若發(fā)現(xiàn)exit,則退出處理循環(huán)
if(strncmp(buf“exit“sizeof(“exit“))==0)
{
printf(“exit?the?receiving?loop\n“);
break;
}
if((nRet?=?send(newconnectionbufstrlen(buf)0))
==SOCKET_ERROR)
{
printf(“send?failed?with?error?%d\n“?WSAGetLastError());
}
}?
//關(guān)閉已連接套接字
closesocket(newconnection);
WSACleanup();
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????172089??2014-04-21?18:08??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\Debug\nTcpServer.exe
?????文件?????189992??2014-04-21?18:08??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\Debug\nTcpServer.ilk
?????文件??????18299??2014-04-21?18:08??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\Debug\nTcpServer.obj
?????文件?????353280??2014-04-21?18:08??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\Debug\nTcpServer.pdb
?????文件?????140288??2014-04-21?18:08??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\Debug\vc60.idb
?????文件??????77824??2014-04-21?18:08??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\Debug\vc60.pdb
?????文件???????2820??2014-04-21?18:08??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\nTcpServer.cpp
?????文件???????4332??2014-04-21?18:08??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\nTcpServer.dsp
?????文件????????526??2014-04-21?18:07??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\nTcpServer.dsw
?????文件??????33792??2014-04-21?18:09??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\nTcpServer.ncb
?????文件??????48640??2014-04-21?18:09??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\nTcpServer.opt
?????文件????????906??2014-04-21?18:08??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nTcpServer\nTcpServer.plg
?????文件?????176187??2014-04-21?18:09??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\Debug\ntTcpClient.exe
?????文件?????192400??2014-04-21?18:09??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\Debug\ntTcpClient.ilk
?????文件??????18536??2014-04-21?18:09??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\Debug\ntTcpClient.obj
?????文件?????451584??2014-04-21?18:09??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\Debug\ntTcpClient.pdb
?????文件?????148480??2014-04-21?18:09??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\Debug\vc60.idb
?????文件??????77824??2014-04-21?18:09??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\Debug\vc60.pdb
?????文件???????2346??2014-04-21?18:09??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\ntTcpClient.cpp
?????文件???????4344??2014-04-21?17:57??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\ntTcpClient.dsp
?????文件????????528??2014-04-21?17:56??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\ntTcpClient.dsw
?????文件??????41984??2014-04-21?18:10??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\ntTcpClient.ncb
?????文件??????53760??2014-04-21?18:10??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\ntTcpClient.opt
?????文件???????1365??2014-04-21?18:09??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\ntTcpClient\ntTcpClient.plg
?????文件?????176185??2014-04-21?18:25??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nUdpClient\Debug\nUdpClient.exe
?????文件?????188844??2014-04-21?18:25??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nUdpClient\Debug\nUdpClient.ilk
?????文件??????16826??2014-04-21?18:24??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nUdpClient\Debug\nUdpClient.obj
?????文件?????361472??2014-04-21?18:25??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nUdpClient\Debug\nUdpClient.pdb
?????文件?????140288??2014-04-21?18:25??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nUdpClient\Debug\vc60.idb
?????文件??????77824??2014-04-21?18:24??實(shí)驗(yàn)4-基于socket的簡單網(wǎng)絡(luò)程序設(shè)計\Codes\nUdpClient\Debug\vc60.pdb
............此處省略29個文件信息
- 上一篇:魚雷尾追彈道.rar
- 下一篇:ship.bmp
評論
共有 條評論