用C++做一个SERVERCLIENT程序

用C++做一个SERVERCLIENT程序,第1张

我这里只有C语言的代码

你稍微翻译下就可以了哈~~

server程序一开始获得除lo接口以外接口的mac地址,等待rarp request请求的到来,如果请求的是自己的mac地址,则向客户端发送rarp reply,回送自己的ip地址。应我使用的地方,一台机器的ip地址每次dhcp以后都会变。所以该程序还是有一些用处。

注意:本程序只为演示packet socket的工作原理,所以没有进行任何的错误处理,并假设工作的机器上只有ethernet接口。但是本程序有个缺点,就是两个程序工作在同一台机器上的时候,server无法接收到client的rarp request。请知道的朋友赐教,谢谢!

//File Name : rarp_server.cpp

extern "C"

{

#include <sys/types.h>

#include <sys/time.h>

#include <time.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/if_ether.h>

#include <段友散net/if_arp.h>

#include <netinet/in.h>

#include <stdio.h>

#include <string.h>

#include <unistd.h>

#include <errno.h>

#include <netinet/if_ether.h>

#include <net/握氏if_arp.h>

#include <net/if.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <sys/ioctl.h>

#include <netpacket/packet.h>

}

#include <cstdlib>

/* args: yiaddr - what IP to ping

* ip - our ip

* mac - our arp address

* interface - interface to use

* retn: 1 addr free

* 0 addr used

* -1 error

*/

/* FIXME: match response against chaddr */

struct arpMsg {

struct ethhdr ethhdr /* Ethernet header */

u_short htype /* hardware type (must be ARPHRD_ETHER) */

u_short ptype /* protocol type (must be ETH_P_IP) */

u_char hlen /* hardware address length (must be 6) */

u_char plen /* protocol address length (must be 4) */

u_short operation /* ARP opcode */

u_char sHaddr[6] /* sender's hardware address */

u_char sInaddr[4] /* sender's IP address */

u_char tHaddr[6] /* target's hardware address */

u_char tInaddr[4] /* target's IP address */

u_char pad[18] /* pad for min. Ethernet payload (60 bytes) */

}

/* miscellaneous defines */

#define MAC_BCAST_ADDR (uint8_t *) "\xff\xff\xff\xff\xff\告桐xff"

#define OPT_CODE 0

#define OPT_LEN 1

#define OPT_DATA 2

struct interface_info

{

char ifname[64]

unsigned char ip[4]

unsigned char mac[6]

}

struct interface_info if_info[10]

int eth_num = 0

void print_mac(unsigned char * mac_addr)

{

for (int i =0i <6++i)

{

printf("%02X", mac_addr[i])

if (i != 5) printf(":")

}

printf("\n")

}

void print_ip(unsigned char * ip_addr)

{

for (int i =0i <4++i)

{

printf("%d", ip_addr[i])

if (i != 3) printf(".")

}

printf("\n")

}

int get_iface_index(int fd, const char* interface_name)

{

struct ifreq ifr

memset(&ifr, 0, sizeof(ifr))

strcpy (ifr.ifr_name, interface_name)

if (ioctl(fd, SIOCGIFINDEX, &ifr) == -1)

{

return (-1)

}

return ifr.ifr_ifindex

}

int get_interfaces()

{

int sock

int len = 64

int last_len = 0

char *pBuff = NULL

int interface_num = 0

struct ifconf interface_conf

struct ifreq ifreq1

struct sockaddr_in *psockaddr_in = NULL

if ( (sock = socket(PF_INET, SOCK_DGRAM, 0)) <0)

{

perror("Could not create socket for geting interface info")

exit(1)

}

while(1)

{

pBuff = (char*)malloc(len)

interface_conf.ifc_len = len

interface_conf.ifc_buf = pBuff

if (ioctl(sock, SIOCGIFCONF, &interface_conf) <0)

{

perror("ioctl error")

}

else

{

if (interface_conf.ifc_len == last_len)

{

break

}

else

{

last_len = interface_conf.ifc_len

}

}

len += 2*sizeof(struct ifreq)

free(pBuff)

}

interface_num = last_len / sizeof(struct ifreq)

for (int i =0i <interface_num++i)

{

strcpy(ifreq1.ifr_name, interface_conf.ifc_ifcu.ifcu_req[i].ifr_name)

if (strcmp(ifreq1.ifr_name, "lo") == 0)

{

continue

}

if (ioctl(sock, SIOCGIFHWADDR, &ifreq1) <0)

{

continue

}

memcpy(if_info[eth_num].mac, ifreq1.ifr_hwaddr.sa_data, 6)

strcpy(if_info[eth_num].ifname, ifreq1.ifr_name)

psockaddr_in = (struct sockaddr_in*)&interface_conf.ifc_req[i].ifr_addr

memcpy(if_info[eth_num].ip, &(psockaddr_in->sin_addr.s_addr), 4)

printf("Interface name: %s", if_info[eth_num].ifname)

printf(" ip address: ")

print_ip(if_info[eth_num].ip)

printf(" mac address:")

print_mac(if_info[eth_num].mac)

eth_num++

}

free(pBuff)

close(sock)

}

int equal_mac(unsigned char* mac1, unsigned char* mac2)

{

for (int i =0i <6++i)

{

if (mac1[i] != mac2[i]) return 0

}

return 1

}

int main()

{

int timeout = 2

int optval = 1

int s /* socket */

int rv = 1 /* return value */

struct sockaddr_ll addr /* for interface name */

struct arpMsg arp

struct arpMsg *parp

fd_set fdset

struct timeval tm

time_t prevTime

u_int32_t ip

u_int32_t yiaddr

struct in_addr my_ip

struct in_addr dst_ip

char buff[2000]

int nLen

char szBuffer[4096]

if ((s = socket (PF_PACKET, SOCK_RAW, htons(ETH_P_RARP))) == -1)

{

printf("Could not open raw socket\n")

return -1

}

if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)) == -1)

{

printf("Could not setsocketopt on raw socket\n")

close(s)

return -1

}

memset(&addr, 0, sizeof(addr))

addr.sll_family = AF_PACKET

addr.sll_ifindex = get_iface_index(s, "eth0")

addr.sll_protocol = htons(ETH_P_ARP)

get_interfaces()

memset(szBuffer, 0, sizeof(szBuffer))

while ((nLen = recvfrom(s, szBuffer, sizeof(szBuffer), MSG_TRUNC, NULL, NULL)) >0)

{

parp = (struct arpMsg*)szBuffer

printf("The request is from ")

print_ip(parp->sInaddr)

for (int i = 0i <eth_num++i)

{

if (equal_mac(if_info[i].mac, parp->tHaddr))

{

/* send arp request */

memset(&arp, 0, sizeof(arp))

memcpy(arp.ethhdr.h_dest, parp->sHaddr, 6)// MAC DA

memcpy(arp.ethhdr.h_source, parp->tHaddr, 6)// MAC SA

arp.ethhdr.h_proto = htons(ETH_P_RARP) // protocol type (Ethernet)

arp.htype = htons(ARPHRD_ETHER) // hardware type

arp.ptype = htons(ETH_P_IP) // protocol type (ARP message)

arp.hlen = 6// hardware address length

arp.plen = 4// protocol address length

arp.operation = htons(4) // RARP reply code

memcpy(arp.sInaddr, if_info[i].ip, 4)// source IP address

memcpy(arp.sHaddr, parp->tHaddr, 6) // source hardware address

memcpy(arp.tInaddr, parp->sInaddr, 4) // target IP address

memcpy(arp.tHaddr, parp->sHaddr, 6)

if (sendto(s, &arp, sizeof(arp), 0, (struct sockaddr*)&addr, sizeof(addr)) <0)

{

perror("Unabele to send arp request")

return 0

}

else

printf("send reply\n")

}

}

}

close(s)

return 0

}

//////////////////////////////////////////////////////////

//File Name : get_ip_by_mac.cpp

#include <sys/types.h>

#include <sys/time.h>

#include <time.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/if_ether.h>

#include <net/if_arp.h>

#include <netinet/in.h>

#include <stdio.h>

#include <string.h>

#include <unistd.h>

#include <errno.h>

#include <netinet/if_ether.h>

#include <net/if_arp.h>

#include <net/if.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <sys/ioctl.h>

#include <cstdlib>

struct arpMsg {

struct ethhdr ethhdr /* Ethernet header */

u_short htype /* hardware type (must be ARPHRD_ETHER) */

u_short ptype /* protocol type (must be ETH_P_IP) */

u_char hlen /* hardware address length (must be 6) */

u_char plen /* protocol address length (must be 4) */

u_short operation /* ARP opcode */

u_char sHaddr[6] /* sender's hardware address */

u_char sInaddr[4] /* sender's IP address */

u_char tHaddr[6] /* target's hardware address */

u_char tInaddr[4] /* target's IP address */

u_char pad[18] /* pad for min. Ethernet payload (60 bytes) */

}

/* miscellaneous defines */

#define MAC_BCAST_ADDR (uint8_t *) "\xff\xff\xff\xff\xff\xff"

#define OPT_CODE 0

#define OPT_LEN 1

#define OPT_DATA 2

void print_mac(unsigned char * mac_addr)

{

for (int i =0i <6++i)

{

printf("%02X", mac_addr[i])

if (i != 5) printf(":")

}

printf("\n")

}

void print_ip(unsigned char * ip_addr)

{

for (int i =0i <4++i)

{

printf("%d", ip_addr[i])

if (i != 3) printf(".")

}

printf("\n")

}

void get_local_addr(unsigned char* mac, u_int32_t &ip)

{

struct ifconf interface_conf

struct ifreq ifreq1

int sock

struct sockaddr_in* psockaddr_in = NULL

if ( (sock = socket(PF_INET, SOCK_DGRAM, 0)) <0)

{

perror("Unable to create socket for geting the mac address")

exit(1)

}

strcpy(ifreq1.ifr_name, "eth0")

if (ioctl(sock, SIOCGIFHWADDR, &ifreq1) <0)

{

perror("Unable to get the mac address")

exit(1)

}

memcpy(mac, ifreq1.ifr_hwaddr.sa_data, 6)

if (ioctl(sock, SIOCGIFADDR, &ifreq1) <0)

{

perror("Unable to get the ip address")

exit(1)

}

psockaddr_in = (struct sockaddr_in*)&ifreq1.ifr_addr

ip = psockaddr_in->sin_addr.s_addr

//print_ip((unsigned char*)ip)

}

int main(int argc, char* argv[])

{

int timeout = 2

int optval = 1

int s /* socket */

int rv = 1 /* return value */

struct sockaddr addr /* for interface name */

struct arpMsg arp

fd_set fdset

struct timeval tm

time_t prevTime

u_int32_t ip

struct in_addr my_ip

struct in_addr dst_ip

char buff[2000]

unsigned char mac[6]

unsigned char dmac[6]

char interface[] = "eth0"

if (argc != 2)

{

printf("Usage: get_ip_by_mac dst_mac\n")

printf("For example: get_ip_by_mac 00:0F:EA:40:0D:04\n")

return 0

}

get_local_addr(mac, ip)

for (int i = 0i <6++i)

{

strncpy(buff, argv[1]+3*i, 2)

buff[3] = '\0'

dmac[i] = strtol(buff, (char**)NULL, 16)

}

if ((s = socket (PF_PACKET, SOCK_PACKET, htons(ETH_P_RARP))) == -1)

{

printf("Could not open raw socket\n")

return -1

}

if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, &optval, sizeof(optval)) == -1)

{

printf("Could not setsocketopt on raw socket\n")

close(s)

return -1

}

memset(&addr, 0, sizeof(addr))

strcpy(addr.sa_data, interface)

/* send rarp request */

memset(&arp, 0, sizeof(arp))

memcpy(arp.ethhdr.h_dest, MAC_BCAST_ADDR, 6)/* MAC DA */

memcpy(arp.ethhdr.h_source, mac, 6) /* MAC SA */

arp.ethhdr.h_proto = htons(ETH_P_RARP) /* protocol type (Ethernet) */

arp.htype = htons(ARPHRD_ETHER) /* hardware type */

arp.ptype = htons(ETH_P_IP) /* protocol type (ARP message) */

arp.hlen = 6/* hardware address length */

arp.plen = 4/* protocol address length */

arp.operation = htons(3) /* RARP request code */

*((u_int *) arp.sInaddr) = ip /* source IP address */

memcpy(arp.sHaddr, mac, 6) /* source hardware address */

memcpy(arp.tHaddr, dmac, 6)

if (sendto(s, &arp, sizeof(arp), 0, &addr, sizeof(addr)) <0)

{

perror("Unabele to send arp request")

return 0

}

rv = 0

/* wait arp reply, and check it */

tm.tv_usec = 0

time(&prevTime)

while (timeout >0)

{

FD_ZERO(&fdset)

FD_SET(s, &fdset)

tm.tv_sec = timeout

if (select(s + 1, &fdset, (fd_set *) NULL, (fd_set *) NULL, &tm) <0)

{

printf("Error on ARPING request:")

if (errno != EINTR) rv = 0

}

else if (FD_ISSET(s, &fdset))

{

if (recv(s, &arp, sizeof(arp), 0) <0 )

{

perror("Unable get valid rarp response")

rv = 0

}

if (arp.operation == htons(4) &&

bcmp(arp.tHaddr, mac, 6) == 0 )

{

printf("Valid rarp reply receved for this address\n")

//print_mac(arp.sHaddr)

print_ip(arp.sInaddr)

rv = 0

break

}

}

timeout -= time(NULL) - prevTime

time(&prevTime)

}

close(s)

return 0

}

#include <unistd.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <netdb.h>

#include <sys/ioctl.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/ip.h>

#include <netinet/in.h>

#include <netinet/if_ether.h>

#include <netpacket/packet.h>

#include <net/ethernet.h>

#include <net/if.h>

#include <arpa/inet.h>

#include <errno.h>

/* 接收缓冲区大小 */

#define RCV_BUF_SIZE 1024 * 5

/* 接收缓冲区伍哗慧 */

static int g_iRecvBufSize = RCV_BUF_SIZE

static char g_acRecvBuf[RCV_BUF_SIZE] = {0}

/* 物理网卡接口,需要根据具体情况修改 */

static const char *g_szIfName = "eth1"

/* 以太网帧封装的协议芦悄类型 */

static const int g_iEthProId[] = { ETHERTYPE_PUP,

ETHERTYPE_SPRITE,

ETHERTYPE_IP,

ETHERTYPE_ARP,

ETHERTYPE_REVARP,

ETHERTYPE_AT,

ETHERTYPE_AARP,

ETHERTYPE_VLAN,

ETHERTYPE_IPX,

ETHERTYPE_IPV6,

ETHERTYPE_LOOPBACK

}

static const char g_szProName[][24] = {

"none", "xerox pup", "sprite", "ip", "arp",

"rarp", "apple-protocol", "apple-arp",

"802.1q", "ipx", "ipv6", "loopback"

}

/* 输出MAC地址 */

static void ethdump_showMac(const int iType, const char acHWAddr[])

{int i = 0

if (0 == iType)

{

printf("SMAC=[")

}

else

{

printf("DMAC=[")

}

for(i = 0i <ETHER_ADDR_LEN - 1i++)

{

printf("%02x:", *((unsigned char *)&(acHWAddr[i])))

}

printf("%02x] ", *((unsigned char *)&(acHWAddr[i])))

}

/* 物理网卡混杂腔答模式属性 *** 作 */

static int ethdump_setPromisc(const char *pcIfName, int fd, int iFlags)

{ int iRet = -1

struct ifreq stIfr

/* 获取接口属性标志位 */

strcpy(stIfr.ifr_name, pcIfName)

iRet = ioctl(fd, SIOCGIFFLAGS, &stIfr)

if (0 >iRet)

{ perror("[Error]Get Interface Flags")

return -1

}

if (0 == iFlags)

{ /* 取消混杂模式 */

stIfr.ifr_flags &= ~IFF_PROMISC

}

else

{/* 设置为混杂模式 */

stIfr.ifr_flags |= IFF_PROMISC

}

iRet = ioctl(fd, SIOCSIFFLAGS, &stIfr)

if (0 >iRet)

{ perror("[Error]Set Interface Flags")

return -1

}

return 0

}

/* 获取L2帧封装的协议类型 */

static char *ethdump_getProName(const int iProNum)

{ int iIndex = 0

for(iIndex = 0iIndex <sizeof(g_iEthProId) / sizeof(g_iEthProId[0])iIndex++)

{if (iProNum == g_iEthProId[iIndex])

{

break

}

}

return (char *)(g_szProName[iIndex + 1])

}

/* Init L2 Socket */

static int ethdump_initSocket()

{ int iRet = -1

int fd = -1

struct ifreq stIf

struct sockaddr_ll stLocal = {0}

/* 创建SOCKET */

fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))

if (0 >fd)

{ perror("[Error]Initinate L2 raw socket")

return -1

}

/* 网卡混杂模式设置 */

ethdump_setPromisc(g_szIfName, fd, 1)

/* 设置SOCKET选项 */

iRet = setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &g_iRecvBufSize,sizeof(int))

if (0 >iRet)

{perror("[Error]Set socket option")

close(fd)

return -1

}

/* 获取物理网卡接口索引 */

strcpy(stIf.ifr_name, g_szIfName)

iRet = ioctl(fd, SIOCGIFINDEX, &stIf)

if (0 >iRet)

{ perror("[Error]Ioctl operation")

close(fd)

return -1

}

/* 绑定物理网卡 */

stLocal.sll_family = PF_PACKET

stLocal.sll_ifindex = stIf.ifr_ifindex

stLocal.sll_protocol = htons(ETH_P_ALL)

iRet = bind(fd, (struct sockaddr *)&stLocal, sizeof(stLocal))

if (0 >iRet)

{ perror("[Error]Bind the interface")

close(fd)

return -1

}

return fd

}

/* 解析Ethernet帧首部 */

static int ethdump_parseEthHead(const struct ether_header *pstEthHead)

{ unsigned short usEthPktType

if (NULL == pstEthHead)

{return -1}

/* 协议类型、源MAC、目的MAC */

usEthPktType = ntohs(pstEthHead->ether_type)

printf(">>>\nEth-Pkt-Type:0x%04x(%s) ", usEthPktType, ethdump_getProName(usEthPktType))

ethdump_showMac(0, pstEthHead->ether_shost)

ethdump_showMac(1, pstEthHead->ether_dhost)

return 0

}

/* 解析IP数据包头 */

static int ethdump_parseIpHead(const struct ip *pstIpHead)

{ struct protoent *pstIpProto = NULL

if (NULL == pstIpHead)

{return -1}

/* 协议类型、源IP地址、目的IP地址 */

pstIpProto = getprotobynumber(pstIpHead->ip_p)

if(NULL != pstIpProto)

{ printf("\nIP-Pkt-Type:%d(%s) ", pstIpHead->ip_p, pstIpProto->p_name)}

else

{ printf("\nIP-Pkt-Type:%d(%s) ", pstIpHead->ip_p, "None")}

printf("SAddr=[%s] ", inet_ntoa(pstIpHead->ip_src))

printf("DAddr=[%s]\n", inet_ntoa(pstIpHead->ip_dst))

return 0

}

/* 数据帧解析函数 */

static int ethdump_parseFrame(const char *pcFrameData)

{ int iRet = -1

struct ether_header *pstEthHead = NULL

struct ip *pstIpHead = NULL

/* Ethnet帧头解析 */

pstEthHead = (struct ether_header*)g_acRecvBuf

iRet = ethdump_parseEthHead(pstEthHead)

if (0 >iRet)

{return iRet}

/* IP数据包类型 */

pstIpHead = (struct ip *)(pstEthHead + 1)

iRet = ethdump_parseIpHead(pstIpHead)

return iRet

}

/* 捕获网卡数据帧 */

static void ethdump_startCapture(const int fd)

{ int iRet = -1

socklen_t stFromLen = 0

/* 循环监听 */

while(1)

{ /* 清空接收缓冲区 */

memset(g_acRecvBuf, 0, RCV_BUF_SIZE)

/* 接收数据帧 */

iRet = recvfrom(fd, g_acRecvBuf, g_iRecvBufSize, 0, NULL, &stFromLen)

if (0 >iRet)

{ continue}

/* 解析数据帧 */

ethdump_parseFrame(g_acRecvBuf)

}

}

/* Main */

int main(int argc, char *argv[])

{ int iRet = -1

int fd = -1

/* 初始化SOCKET */

fd = ethdump_initSocket()

if(0 >fd) {

return -1

}

/* 捕获数据包 */

ethdump_startCapture(fd)

/* 关闭SOCKET */

close(fd)

return 0

}

编译命令

gcc -o a a.c

./a

实现效果图

...

>>>Eth-Pkt-Type:0x0800(ip) SMAC=[00:1a:92:ef:b6:dd] DMAC=[00:24:7e:dc:99:18] IP-Pkt-Type:6(tcp) SAddr=[192.168.0.111] DAddr=[192.168.0.100]

>>>Eth-Pkt-Type:0x0800(ip) SMAC=[00:24:7e:dc:99:18] DMAC=[00:1a:92:ef:b6:dd] IP-Pkt-Type:6(tcp) SAddr=[192.168.0.100] DAddr=[192.168.0.111]

>>>Eth-Pkt-Type:0x0800(ip) SMAC=[00:24:7e:dc:99:18] DMAC=[00:1a:92:ef:b6:dd] IP-Pkt-Type:1(icmp) SAddr=[192.168.0.100] DAddr=[192.168.0.111]

>>>Eth-Pkt-Type:0x0800(ip) SMAC=[00:1a:92:ef:b6:dd] DMAC=[00:24:7e:dc:99:18] IP-Pkt-Type:1(icmp) SAddr=[192.168.0.111] DAddr=[192.168.0.100]

>>>Eth-Pkt-Type:0x0800(ip) SMAC=[00:1a:92:ef:b6:dd] DMAC=[00:24:7e:dc:99:18] IP-Pkt-Type:6(tcp) SAddr=[192.168.0.111] DAddr=[192.168.0.100]

...

互联网技术定义

互联网技术指在计算机技术的基础上开发建立的一种信息技术(Information Technology 简称 IT) 直译 internet Technology 简称 IT

[编辑本段]技术的概念与范围

第一层是硬件,主要指数据存储、处理和传输的主机和网络通信设备; 第二层是指软件,包括可用来搜集、存储、检索、分析、应用、评估信息的各种软件,它包括我们通常所指的ERP(企业资源计划)、CRM(客户关系管理)、SCM(供应链管理)等商用管理软件,也包括用来加强流程岁差管理的WF(工作流)管理软件、辅助分析的DW/DM(数据仓库和数据挖掘)软件等; 第三层是指应用,指搜集、存储、检索、分析、应用、评估使用各种信息,包括应用ERP、CRM、SCM等软件直接辅助决策,也包括利用其它决策分析模型或借助DW/DM等技术手段来进一步提高分析的质量,辅助决策者作决策(强调一点,只是辅助而不是替代人决策)。 有些人理解的互联网技术把前二层合二为一,统指信息的存储、处理和传输,后者则为信息的应用;也有人把后二层合二为一,则划分为前硬后软。通常第三层还没有得到足够的重视,但事实上却是唯有当信息得到有效应用时IT的价值才能得到充分发挥,也才真正实现了信息化的目标。信息化本身不是目标,它只是在当前时代背景下一种实现目标比较好乎凯皮的一种手段。 卡尔的互联网技术是指什么呢?在那篇文章孙斗里面他并没有明确提出,不过他提到信息技术的核心功能--数据存储、处理和传输。从他推理的逻辑来看,即从蒸汽机、铁路、电报电话、电力等基础设施建设推过来的,还用摩尔定律来佐证主机和光纤的发展。 互联网技术这一概念上是经常含混不清:一会儿指主机网络,一会儿又指软件。信息技术本身只是一个工具,就象一柄利剑或一枝好笔。

[编辑本段]容易混淆的技术概念

数据(Data)=事实的记录,如上季度甲系列产品在华东地区销售额为120万。 信息=(Information)=数据+ 意义,如上季度甲系列产品华东地区销售额比去年同期减少了25 %。 智能(Intelligence)=信息+理解(understanding)与推理(reasoning),如分析原因是华东地区销售单位不行,或甲系列产品进入了衰退期,还是公司整体营销活动落后,竞争者强力促销导致?或是其它原因。 知识(Knowledge) =解决问题的技能(skill),针对这一问题公司应对的策略是什么? 智慧(Wisdom) =知识的选择(Selection) 应对的行动方案可能有多种,但(战略)选择哪个*智慧。行动则又会产生新的交易数据。

[编辑本段]互联网技术的组成

互联网技术的普遍应用,是进入信息社会的标志。不同的人和不同的书上对此有不同解释。但一个基本上大家都同意的观点是,IT有以下三部分组成: ----- 传感技术 这是人的感觉器官的延伸与拓展,最明显的例子是条码阅读器; ----- 通信技术 这是人的神经系统的延伸与拓展,承担传递信息的功能; ----- 计算机技术 这是人的大脑功能延伸与拓展,承担对信息进行处理的功能。 所谓信息化是用信息技术来改造其他产业与行业,从而提高企业的效益。在这个过程中信息技术承担了一个得力工具的角色。 顺便说一句何谓IT产业,有一个大致的分类,可以供大家参考: 互联网技术基础技术的提供 IC研发、软件编写 如INTEL、MS等; 互联网技术技术产品化 元器件、部件、组件制造 如精英、大众等; 互联网技术产品集成化 计算机及外设制造商 如联想、IBM; 互联网技术产品系统化 解决方案、信息系统 如华为、HP; 互联网技术产品流通 渠道、销售 如神州数码; 互联网技术产品服务 咨询服务和售后服务 如蓝色快车; 互联网技术产业舆论支持 IT类媒体 如CCW、CCID; 互联网技术产业第三方服务 各种需要配套的服务 如法律咨询、PR服务; 互联网技术后备人员培养 各种院校 如计算机专业; 互联网技术产业合作组织 各种协会、集会。 集成测试的整个周期将系统性地包括软件接收测试、端到端测试、电视画面合成测试、系统测试、用户验收测试、多运动项目综合测试及技术演练等等。其目的是确保各IT系统具备所需的功能及可靠性,从而顺利地为北京2008年奥运会服务。

[编辑本段]互联网技术主要职业分类

1.1软件类

1.1.1系统分析师 1.1.2计算机程序设计员 1.1.3软件测试师 1.1.4软件项目管理师 1.1.5系统架构设计师

1.2硬件类

<B>1.2硬件类 </B>1.2.1计算机维修工

1.3网络类

1.3.1计算机网络管理员 1.3.2网络系统设计师 1.3.3网络综合布线员 1.3.4网络建设工程师

1.4信息系统类

1.4.1计算机 *** 作员 1.4.2信息系统安全师 1.4.3信息系统管理师 1.4.4数据库系统管理员 1.4.5信息系统监理师 1.4.6信息系统评估师 1.4.7信息资源开发与管理人员 1.4.8信息系统设计人员

1.5制造类

<B>1.5制造类 </B>1.5.1半导体器件测试工 1.5.2半导体器件制作工艺师 1.5.3半导体器件制造工 1.5.4半导体器件支持工 1.5.5半导体器件封装工

[编辑本段]互联网应用主要职业分类

2.1控制类

2.1.1单片机应用设计师 2.1.2控制系统设计师 2.1.3逻辑控制芯片编辑员 2.1.4数据自动采集与分析员

2.2应用系统开发类

<B>2.2应用系统开发类 </B>2.2.1嵌入式系统开发师 2.2.2网站开发师 2.2.3游戏程序开发师 2.2.4射频识别系统开发师

2.3设计类

<B>2.3设计类 </B>2.3.1计算机平面设计师

2.4商务类

<B>2.4商务类 </B>2.4.1网络编辑员 2.4.2计算机网络客户服务人员 2.4.3网上销售员

2.5娱乐类

<B>2.5娱乐类 </B>2.5.1数字视频制作师 2.5.2数字音频制作师 2.5.3三维动画制作员 2.5.4游戏美术设计师

2.6教育类

<B>2.6教育类 </B>2.6.1网络课件制作师

2.7通讯类

[编辑本段]互联网技术其他职业分类

3.3.1电子标签 *** 作员

[编辑本段]世界互联网技术发展史

1936年 英国数学家A.M.Turing发明图灵机,为现代计算机硬件和软件做了理论上的准备。 1942年 世界上第一台电子计算机ABC研制成功,它有300个电子管,采用二进制,基本体系结构与现代计算机已无二致。 1943年 英国计算机“巨人”投入运行。不过1970年之前对它一直保密。 1945年 现代计算机之父:冯·诺依曼第一次提出存储程序计算机的概念,即“冯·诺依曼机器”。 <B> 1946年 </B> 2月10日,电子数字积分机和计算机诞生。它装有18000个真空管,总重量达30吨,耗资近50万美元,是世界上第一台多功能、全电子数字计算机,可以实现每分钟几千次乘法运算。 <B> 1946年 </B> 5月英国剑桥大学研制成功第一台冯·诺依曼机器EDSAC。 1947年 12月23日,美国贝尔电话实验室发明了世界上第一个晶体管。 1948年 曼彻斯特大学开发出世界首台存储程序机Baby。 1950年 Engineering Research Associates制造出世界上第一台商用计算机ERA 1101。 <B> 1951年 </B> 第一台数字式计算机UNIVAC1为美国人口普查创建。 <B> 1952年 </B> Grace Hopper勾画出第一个“编译程序”蓝图,即将所有程序在执行之前都翻译成机器语言,为计算机商用做出重大贡献。 1955年 Grace Hopper开发出A-3编译器Math-Matic。 1956年 世界上第一台采用晶体管元件的电脑研制成功。 第一条跨越大西洋的电话电缆敷设完成。 Bell实验室开发出可视电话样机。 <B> 1957年 </B> IBM设计出世界上第一个计算机硬盘RAMAC 350,直径24英寸、总容量5兆字节。 IBM开发出FORTRAN语言。 <B> 1958年 </B> 第一台商用电子管计算机Univac Model 80发布。 MIT John McCarthy开始开发Lisp语言,1960年完成。 1959年 世界上第一块集成电路问世。 发表了Cobol语言规格,于1961年完成。 1964年 IBM发布IBM System/360计算机。 1965年 DEC推出真正被业界认可的世界上第一台标准小型机PDP-8。 美国Dartmouth 学院的Thomas E.Kurtz 和 John Kemeny 开发出Basic语言。 世界上第一部程控电话交换机—美国贝尔系统1号电子交换机问世。 国际卫星通信组织发射了一颗半试验半实用的静止(同步)通信卫星,标志着同步卫星通信时代的开始。 <B> 1967年 </B> 美国《Computerworld》报创刊。 IBM推出世界上第一张软盘,直径为32英寸。 瑞士的Njklaus Wirth 在 Algol的基础上开始开发Pascal语言,于1971年完成。 1968年 IBM开发出世界上第一个数据库管理系统IMS。 挪威计算中心的O.J.Dahl和K.Nygard发表了第一个面向对象语言Simula 67。 1969年 贝尔实验室用汇编语言开发出第一个多任务多用户的计算机分时系统Unix。 IBM允许客户分开购买它的软件和硬件,从而建立了软件市场。 美国国防部开始研究ARPANET,人们将此视为Internet的开端。 1970年 美国贝尔实验室的Ken Thompson 和Dennis M.Ritchie开始开发Unix *** 作系统。 传输损耗仅为20分贝/公里的光纤和在室温下能连续工作的半导体激光器研制成功,光纤通信走向实用化。 1971年 Intel 开发出世界上第一个微 处理 器4004。 Niklaus Wirth 开 发出Pascal语言。 Gary Starkweather在施乐的实验室里研制出世界上第一台激光打印机。 1972年 Bell实验室的Dennis Ritchie开发出C语言。 国际电报电话咨询委员会(CCITT)首次提出ISDN的概念。 1973年 法国Luminy-Marseilles 大学的Alain Colmerauer 开发了Prolog语言。 马丁·库珀发名手机,成为第一个使用移动电话的人。 1974年 美国国防部开发出TCP(传输控制协议)。 Intel推出 8080微处理器,并被世界首台商业PC所采用。 Zilog公司推出处理器Z-80。 第一台商业成功的PC牛郎星8800研制成功。 IBM首次提出计算机精简指令集。 Xerox推出第一台工作站样机Xerox Alto。 在第一届计算机国际象棋冠军赛中,俄罗斯程序KAISASA获胜。 1975年 比尔·盖茨和保罗·艾伦为牛郎星开发了世界上第一套标准的微电脑软件Basic,并创办了Microsoft公司。 Xerox和斯坦福大学联合推出“以太网”(Ethernet)。该网络成为局域网的第一个工业标准产品。 1976年 第一台商业成功的巨型机Cray-1 研制成功,运算速度达每秒2.5亿次。 Hayes推出第一个PC调制解调器。 1977年 第一台带彩显的PC苹果II正式亮相。 世界上第一个商用光纤通信系统在美国芝加哥的两个电话局(相距7公里)之间开通。 1978年 TCP分成TCP和IP。 1981年 世界上第一台便携式电脑Osborne面世。 8月12日首次以“个人计算机(PC)”命名的IBM PC面世。它采用Intel的8088处理器和Microsoft的MS-DOS *** 作系统。 Ashton-Tate推出dBaseⅡ。 自称Captain Zap的23岁小伙子Ian Murphy潜入白宫、五角大楼和BellSouth的计算机系统。 1983年 蜂窝移动电话通信系统投入商用。 1984年 Apple推出Apple Macintosh机。 域名系统被创建。 MIPS计算机系统公司创建,并与斯坦福大学着手开发RISC体系结构。 HP推出面向个人的激光打印机。 1985年 Intel推出386微处理器。 Windows 1.0正式版本上市。 1986年 国家科学基金会创建骨干网速度为56KB/秒的NSFnet。 1987年 IBM和Microsoft公司发布OS/2 1.0。 柯达推出世界上首台百万像素商业数码相机。 1988年 11月1日,美国康奈尔大学的研究生Robert Morris在ARPANET中试验计算机病毒的可行性想法时,释放了一个实验性的网络蠕虫程序,在8小时之内,这一程序侵入了3000台~6000台运行Unix *** 作系统的VAX机和Sun计算机,造成严重损失。Morris既是病毒制造者,又是Internet上的首例黑客。 第一个横跨大西洋的海底通信光缆(TAT-8)系统敷设成功。 1989年 美国发射了第一颗全球定位系统(GPS)工作卫星。 英国科学家Timothy Berners Lee开发出万维网。 新加坡创新公司推出声霸卡,标志着PC多媒体时代的来临。 1990年 IBM发布基于RISC的RS/6000。 World Wide Web 软件开发成功。 Internet搜索程序Archie在McGill大学问世。 最早的局域网交换机研制成功。 1991年 芬兰赫尔辛基大学学生Linus Torvalds开发出Linux *** 作系统,并将它作为自由软件传播。 1992年 3月22日Intel推出第5代芯片Pentium处理器。 1993年 Peter de Jager在《Computerworld》上发表“2000年末日”一文,对Y2K问题的危险性及解决成本提出警告。 美国克林顿政府宣布了美国国家信息基础设施的规划,简称NII,俗称信息高速公路。 Microsoft正式发布Windows NT。 1994年 美国Netscape公布用于Internet 的浏览器Navigator。 Internet进入商品化时代。 1995年 Microsoft推出32位桌面 *** 作系统Windows 95。 Microsoft推出Internet 浏览器Internet Explorer。 IP电话初次亮相,VocalTec推出Internet Phone客户软件。 世界上第一个商用CDMA移动通信网在香港开通。 Sun公司推出Java语言。 Oracle公司总裁拉里·埃里森提出网络计算机(NC)概念。 Amazon.com在Internet上卖出第一本书。 一些与网络有关的公司挂牌上市。Netscape成为第三大Nasdaq IPO股票价值。 域名登记不再免费,每年收费50美元。 1996年 美国34所著名大学在芝加哥发起研发“下一代Internet”项目。 可改写光盘(CD-RW)技术问世。 PDA产品Palm Pilot 1000上市。 1997年 IBM“深蓝”机上的国际象棋软件,第一次打败了世界国际象棋冠军 Gary Kasparov。 IETF提出IPv6标准。 无线局域网标准IEEE 802.11出台。 Yahoo和Amazon.com等成功上市。 电子商务发展年,网上零售商超过了10万家。截至1997年年底,Cisco在Web网站上的网络设备销售额为30亿美元,Dell网站上每天的PC销售额达100万美元。1997年,Cisco 64亿美元的总收入的39%源于其Web网站。 1998年 iMac苹果电脑面世。 Larry Page和Sergey Brin创建了Google,Google成为被广泛应用的Internet搜索引擎。 英国广播公司(BBC)在世界上首先播放了数字电视节目。 “铱星”系统开始向全世界提供个人通信商业服务。 1月26日,Compaq以96亿美元收购DEC。 加拿大北方电讯以91亿美元并购美国Bay。 10月19日美国联邦法院决定正式开庭审理美国司法部和20个州政府对微软所提起的反垄断诉讼。 11月服务商American Online以42亿美元股价收购Netscape 通信公司。 1999年 1月14日朗讯科技宣布以240亿美元收购Ascend。 2000年 1月10日全球最大的Internet接入服务商America Online宣布以总交易金额超过1600亿美元的换股方式并购Time Warner。 5月17日全球最大的网上时装零售企业、欧洲资金最雄厚的.com公司宣布倒闭。美国至少有130家Internet公司因资金枯竭而倒闭。 美IT市场增速9年来首次放缓。 2001年 4月24日IBM公司宣布以10亿美元现金收购Informix的数据库业务。 5月29日Intel第一款64位处理器芯片Itanium正式发布。 8月28日Microsoft发布第一个64位Windows *** 作系统Windows Advanced Server限制版。 9月4日,HP宣布将以250亿美元的股票交易价格收购Compaq。 9月NTT DoCoMo在全球率先启动3G服务。 10月25日Microsoft发布Windows XP。 12月NTT公司宣布将与Intel、SGI公司联合进行网格计算试验。 2002年 5月IEEE 802.3以太网标准组织批准了万兆以太网标准的最后草案。 IBM公司宣布投资10亿美元支持Linux。 IDC表示,-2.3%的增长率使2002年成为IT产业有史以来最差的一年。 IBM宣布将投入100亿美元用于按需计算(On Demand)。 Nasdaq指数跌至6年前.com兴起前的水平。 2003年 3月SCO以“不当利用本公司拥有知识产权的Linux *** 作系统”为由起诉IBM。 3月12日Intel公司在全球同步发布其最新一代移动计算技术Centrino(迅驰)。 AMD推出分别面向桌面与移动计算平台的AMD Athlon 64位微处理器。 Apple推出在线音乐服务,开张后的第一周内就以每首歌99美分的价格销售了100万首。 2004年 1月14日RFID(Radio Frequency Identification)标准组织EPCgloba称确定了第一个全球性标准,以加速各公司采用RFID技术改进其供应链的运作。 4月2日,美国Sun公司宣布与微软公司达成一项为期十年的合作协议,了结了一切未决诉讼。根据协议,微软将向Sun支付7亿美元以解决所有未决反垄断问题,另外支付9亿美元解决所有专利问题。 6月28日Intel推出基于32/64位至强处理器的新平台系统。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8250297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存