网络编程2
来源:互联网 发布:淘宝高仿大牌女包推荐 编辑:程序博客网 时间:2024/06/15 01:52
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <winsock2.h>
#define _MagicNumberT 0xFFFE3141 // TCP 数据包头部标识符
#define _MagicNumberU 0xFFEF3141 // UDP 数据包头部标识符
#define _SNDID_Len 32 // 学号长度
#define _PostData_Len 256 // 最大数据长度
#pragma comment(lib,"ws2_32.lib")
#pragma comment(linker, "/subsystem:console ")
typedef struct
{
DWORD magicnum;
char SNSID[_SNDID_Len]; // 学号字段,长度32
char PostData[_PostData_Len]; // 数据字段,长度256
}_A1_Packet;
void main()
{
// Initialize Winsock
WSADATA wsaData;
int errorCode;
int iResult=WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult!=0)
{
printf("初始化套接字失败\n");
return ;
}
SOCKET TCPSocket;
TCPSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);// 创建TCP 套接字。
//设置Server 端IP 和端口:(TCP/UDP 相同)
if (TCPSocket==INVALID_SOCKET)
{
printf("创建套接字失败\n");
closesocket(TCPSocket);
WSACleanup();
return ;
}
SOCKADDR_IN server;
server.sin_family = AF_INET;
server.sin_port = htons(8888);
server.sin_addr.s_addr = inet_addr("");
errorCode=connect(TCPSocket, (struct sockaddr *)&server, sizeof(server)); //用TCP 连接服务器
if (SOCKET_ERROR == errorCode)
{
printf("连接服务器失败\n");
closesocket(TCPSocket);
WSACleanup(); //
return ;
}
// 构造请求数据包:
_A1_Packet pkgBuffer;
pkgBuffer.magicnum = _MagicNumberT; // 用TCP 数据包头部标识符填充magicnum
// 用学号填充SNSID[],末尾填\0
int IDlen=strlen("201272713"); //学号长度
strcpy(pkgBuffer.SNSID,"201272713");
pkgBuffer.SNSID[IDlen]='\0';
errorCode=send(TCPSocket,(char *)&pkgBuffer,sizeof(pkgBuffer),0);// 发送TCP 请求包
if (SOCKET_ERROR == errorCode )
{
printf("向服务器发送数据失败\n");
closesocket(TCPSocket);
WSACleanup(); //
return ;
}
errorCode=recv(TCPSocket,(char *)&pkgBuffer,sizeof(pkgBuffer),0);// 接收服务器端的回应
if (SOCKET_ERROR==errorCode)
{
printf("接受服务器数据失败\n");
closesocket(TCPSocket);
WSACleanup();
return ;
}
closesocket(TCPSocket);
//初始化UDP Socket
SOCKET UDPSocket;
UDPSocket=socket(AF_INET, SOCK_DGRAM,IPPROTO_UDP);// 创建UDP套接字
if (UDPSocket==INVALID_SOCKET)
{
printf("创建套接字失败\n");
closesocket(UDPSocket);
WSACleanup();
return ;
}
//修改magicnum 为UDP 数据包头部标识。填写学号SNSID[]和提交的数据PostData[]。
pkgBuffer.magicnum = _MagicNumberU;//用UDP 数据包头部标识符填充magicnum
// 使用sendto()发送到服务器。
errorCode=sendto(UDPSocket,(char *)&pkgBuffer,sizeof(pkgBuffer), 0, (struct sockaddr *)&server,sizeof(server));
printf("发送%d字节数据包,等待服务器回应....\n",errorCode);
printf("SNSID:%s\n",pkgBuffer.SNSID);
printf("Data:%s\n",pkgBuffer.PostData);
//(用recvfrom()等待服务器的返回信息,检查返回数据包中SNSID[]的数据,若为OK!则
//表示成功。(提交数据后请仔细确认服务器的返回信息)
int addrlen=sizeof(struct sockaddr_in);
printf("\n向目标发送数据:\n");
errorCode=recvfrom(UDPSocket,(char *)&pkgBuffer,sizeof(pkgBuffer),0,(struct sockaddr *)&server,&addrlen);
printf("UDP发送数据完毕,等待回应... %s\n",pkgBuffer.SNSID);
closesocket(UDPSocket);
WSACleanup();
getch();
}
#include <stdlib.h>
#include <conio.h>
#include <winsock2.h>
#define _MagicNumberT 0xFFFE3141 // TCP 数据包头部标识符
#define _MagicNumberU 0xFFEF3141 // UDP 数据包头部标识符
#define _SNDID_Len 32 // 学号长度
#define _PostData_Len 256 // 最大数据长度
#pragma comment(lib,"ws2_32.lib")
#pragma comment(linker, "/subsystem:console ")
typedef struct
{
DWORD magicnum;
char SNSID[_SNDID_Len]; // 学号字段,长度32
char PostData[_PostData_Len]; // 数据字段,长度256
}_A1_Packet;
void main()
{
// Initialize Winsock
WSADATA wsaData;
int errorCode;
int iResult=WSAStartup(MAKEWORD(2,2), &wsaData);
if (iResult!=0)
{
printf("初始化套接字失败\n");
return ;
}
SOCKET TCPSocket;
TCPSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);// 创建TCP 套接字。
//设置Server 端IP 和端口:(TCP/UDP 相同)
if (TCPSocket==INVALID_SOCKET)
{
printf("创建套接字失败\n");
closesocket(TCPSocket);
WSACleanup();
return ;
}
SOCKADDR_IN server;
server.sin_family = AF_INET;
server.sin_port = htons(8888);
server.sin_addr.s_addr = inet_addr("");
errorCode=connect(TCPSocket, (struct sockaddr *)&server, sizeof(server)); //用TCP 连接服务器
if (SOCKET_ERROR == errorCode)
{
printf("连接服务器失败\n");
closesocket(TCPSocket);
WSACleanup(); //
return ;
}
// 构造请求数据包:
_A1_Packet pkgBuffer;
pkgBuffer.magicnum = _MagicNumberT; // 用TCP 数据包头部标识符填充magicnum
// 用学号填充SNSID[],末尾填\0
int IDlen=strlen("201272713"); //学号长度
strcpy(pkgBuffer.SNSID,"201272713");
pkgBuffer.SNSID[IDlen]='\0';
errorCode=send(TCPSocket,(char *)&pkgBuffer,sizeof(pkgBuffer),0);// 发送TCP 请求包
if (SOCKET_ERROR == errorCode )
{
printf("向服务器发送数据失败\n");
closesocket(TCPSocket);
WSACleanup(); //
return ;
}
errorCode=recv(TCPSocket,(char *)&pkgBuffer,sizeof(pkgBuffer),0);// 接收服务器端的回应
if (SOCKET_ERROR==errorCode)
{
printf("接受服务器数据失败\n");
closesocket(TCPSocket);
WSACleanup();
return ;
}
closesocket(TCPSocket);
//初始化UDP Socket
SOCKET UDPSocket;
UDPSocket=socket(AF_INET, SOCK_DGRAM,IPPROTO_UDP);// 创建UDP套接字
if (UDPSocket==INVALID_SOCKET)
{
printf("创建套接字失败\n");
closesocket(UDPSocket);
WSACleanup();
return ;
}
//修改magicnum 为UDP 数据包头部标识。填写学号SNSID[]和提交的数据PostData[]。
pkgBuffer.magicnum = _MagicNumberU;//用UDP 数据包头部标识符填充magicnum
// 使用sendto()发送到服务器。
errorCode=sendto(UDPSocket,(char *)&pkgBuffer,sizeof(pkgBuffer), 0, (struct sockaddr *)&server,sizeof(server));
printf("发送%d字节数据包,等待服务器回应....\n",errorCode);
printf("SNSID:%s\n",pkgBuffer.SNSID);
printf("Data:%s\n",pkgBuffer.PostData);
//(用recvfrom()等待服务器的返回信息,检查返回数据包中SNSID[]的数据,若为OK!则
//表示成功。(提交数据后请仔细确认服务器的返回信息)
int addrlen=sizeof(struct sockaddr_in);
printf("\n向目标发送数据:\n");
errorCode=recvfrom(UDPSocket,(char *)&pkgBuffer,sizeof(pkgBuffer),0,(struct sockaddr *)&server,&addrlen);
printf("UDP发送数据完毕,等待回应... %s\n",pkgBuffer.SNSID);
closesocket(UDPSocket);
WSACleanup();
getch();
}
- Java网络编程2
- java网络编程2
- 网络编程基础(2)
- java网络编程2
- java网络编程(2)
- 网络编程笔记2
- 网络编程2
- 网络编程(2)
- 网络编程2
- 网络编程笔记<2>
- socket网络编程2
- 网络编程总结 2
- 网络编程2
- Java_网络编程2
- 网络编程2
- boost网络编程(2)
- 网络编程 (2)
- 网络编程2
- 区间重合判断(编程之美2.19)
- 【python】获取5ige网站音乐的下载地址–python版
- ENVI/IDL波段运算
- opengl在64位下的配置
- CSSE7030 Assignment 2
- 网络编程2
- ExtJs组件监听事件
- osg for android学习之pagedlod
- 编程之美最短摘要生成
- 算法--线段树
- Kinect体感游戏开发思考
- linux历程--进程通讯概述
- iOS6中图片加载的问题
- 第三章 数据完整性