• 大小: 686KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-27
  • 语言: 其他
  • 标签: 基于socket  

资源简介

实验4-基于socket的简单网络程序设计 1、实验目的与要求: (1)初步掌握TCP和UDP方式的网络编程模式。 (2)能运用Winsock提供的API函数接口进行网络程序的编写。

资源截图

代码片段和文件信息

#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“);

//创建监听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“);
//设置SOCKADDR_IN地址结构
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;
}

//监听连接
if (listen(listensocket 5) == SOCKET_ERROR)
{
printf(“listen 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));

//此时可以继续监听新的连接,或者停止监听进行数据收发
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;
}
//显示接收到的数据
printf(buf);
printf(“\n“);
//若发现exit,则退出处理循环
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());
}

//关闭已连接套接字
closesocket(newconnection);

WSACleanup();
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     172089  2014-04-21 18:08  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\Debug\nTcpServer.exe

     文件     189992  2014-04-21 18:08  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\Debug\nTcpServer.ilk

     文件      18299  2014-04-21 18:08  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\Debug\nTcpServer.obj

     文件     353280  2014-04-21 18:08  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\Debug\nTcpServer.pdb

     文件     140288  2014-04-21 18:08  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\Debug\vc60.idb

     文件      77824  2014-04-21 18:08  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\Debug\vc60.pdb

     文件       2820  2014-04-21 18:08  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\nTcpServer.cpp

     文件       4332  2014-04-21 18:08  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\nTcpServer.dsp

     文件        526  2014-04-21 18:07  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\nTcpServer.dsw

     文件      33792  2014-04-21 18:09  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\nTcpServer.ncb

     文件      48640  2014-04-21 18:09  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\nTcpServer.opt

     文件        906  2014-04-21 18:08  实验4-基于socket的简单网络程序设计\Codes\nTcpServer\nTcpServer.plg

     文件     176187  2014-04-21 18:09  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\Debug\ntTcpClient.exe

     文件     192400  2014-04-21 18:09  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\Debug\ntTcpClient.ilk

     文件      18536  2014-04-21 18:09  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\Debug\ntTcpClient.obj

     文件     451584  2014-04-21 18:09  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\Debug\ntTcpClient.pdb

     文件     148480  2014-04-21 18:09  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\Debug\vc60.idb

     文件      77824  2014-04-21 18:09  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\Debug\vc60.pdb

     文件       2346  2014-04-21 18:09  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\ntTcpClient.cpp

     文件       4344  2014-04-21 17:57  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\ntTcpClient.dsp

     文件        528  2014-04-21 17:56  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\ntTcpClient.dsw

     文件      41984  2014-04-21 18:10  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\ntTcpClient.ncb

     文件      53760  2014-04-21 18:10  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\ntTcpClient.opt

     文件       1365  2014-04-21 18:09  实验4-基于socket的简单网络程序设计\Codes\ntTcpClient\ntTcpClient.plg

     文件     176185  2014-04-21 18:25  实验4-基于socket的简单网络程序设计\Codes\nUdpClient\Debug\nUdpClient.exe

     文件     188844  2014-04-21 18:25  实验4-基于socket的简单网络程序设计\Codes\nUdpClient\Debug\nUdpClient.ilk

     文件      16826  2014-04-21 18:24  实验4-基于socket的简单网络程序设计\Codes\nUdpClient\Debug\nUdpClient.obj

     文件     361472  2014-04-21 18:25  实验4-基于socket的简单网络程序设计\Codes\nUdpClient\Debug\nUdpClient.pdb

     文件     140288  2014-04-21 18:25  实验4-基于socket的简单网络程序设计\Codes\nUdpClient\Debug\vc60.idb

     文件      77824  2014-04-21 18:24  实验4-基于socket的简单网络程序设计\Codes\nUdpClient\Debug\vc60.pdb

............此处省略29个文件信息

评论

共有 条评论