making word 什么意思
"|" 是按位或运算符,对整型数进行二进制按位取或运算。
比如0110 0011| 0011 0101--------------------= 0111 0111定义MakeWord(a, b) 的含义应该是将a b合成一个字(双字节),比如 MakeWord(0xaa, 0xbb) 结果应该是0xbbaa,a在低字节,转换成BYTE只留下一字节的内容,b也留下一字节并左移做高字节,通过按位或运算符将两者合并到一起。
make word cards造句
Take out your word card , please .拿出单词卡片。
The teacher flashed up each word card to see if the children would recognize it.老师举起一张张单词卡片,看学生是否可以辨识。
Mother put some "cat" word card posted in the house, and then take a everywhere "cat" word card, please help it find baby friend (let the baby took off in the word CARDS everywhere stick).妈妈把一些“小花猫”字卡贴在屋内各处,然后再拿一张“小花猫”字卡,请宝宝帮它找朋友(让宝宝摘下贴在各处的字卡)。
Please buy the disk and word card from the book store.请还没有购买光碟和卡片的家长尽快购买。
Each teacher throws the dice in turn. You can take a piece of English word card of 4 or 6 level according to you ability if you throw the dice with 2 or 4 or 6.每位教师轮流掷,掷到2 4 6 可以根据自己的情况从四级或六级单词卡片的箱子里抽取一张卡片并且大声读出来。
T say the story and get Ss show the word card when they hear it.故事是学生喜闻乐见的,听一听出示单词,训练并检查了学生的听力。
Review the sounds Teacher makes a sound of a letter and shows a word card. If the word including the sound, students clap and read the word. Or not students just stomp.通过拍手、跺脚的身体运动,来复习字母和其发音,既测试学生反应速度,又从一开始就调动学生的积极性。
Clothing brand has become one occupational characteristics, quality of life, a status symbol, as the modern "free word business card."服装的品牌已然成为人们职业特点、生活品位、身份地位的象征,成为现代人的“无字名片”。
Put one English word on each card, and then put either the translation or the English definition on the back.After you study the words, review them quickly to see how many words you remember.在每个卡片上写下一个单词,背面写上中文或者英文注释。
学习了单词后,快速复习一遍来检查你记住了多少个?
vc++ 显示ip地址方法
vs2010测试通过#include#pragma comment(lib,"ws2_32.lib")void CLoginDlg::OnBnClickedButton2(){// TODO: 在此添加控件通知处理程序代码WSADATA wsaData; char name[155]; char *ip; PHOSTENT hostinfo; if ( WSAStartup( MAKEWORD(2,0), &wsaData ) == 0 ) { if( gethostname ( name, sizeof(name)) == 0) { if((hostinfo = gethostbyname(name)) != NULL) { ip = inet_ntoa(*(struct in_addr*)*hostinfo->h_addr_list); char str[16]; sprintf(str, " 您的IP是: %s \n", ip); ::MessageBoxA(NULL,str, "提示",MB_OK); } } WSACleanup( ); } }
C++ SOCKET 服务器端向客户端发消息 \0被"0xcc"填充
C++通过socket编程实现服务端与客户端的通讯,代码如下(个人环境下测试正常,如果遇到运行send发送报错,请检查服务器端口是否被占用,调试的时候请先运行服务端程序在运行客服端,一定要加载库函数ws2_32.lib,发送字符时应该多加一个空字符作为结束字符):服务器端程序:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697// Server.cpp : Defines the entry point for the console application.#include "winsock2.h"#pragma comment(lib, "ws2_32.lib")#include using namespace std; int main(int argc, char* argv[]) { const int BUF_SIZE = 64; WSADATA wsd; //WSADATA变量 SOCKET sServer; //服务器套接字 SOCKET sClient; //客户端套接字 SOCKADDR_IN addrServ;; //服务器地址 char buf[BUF_SIZE]; //接收数据缓冲区 char sendBuf[BUF_SIZE];//返回给客户端得数据 int retVal; //返回值 //初始化套结字动态库 if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) { cout return 1; } //创建套接字 sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(INVALID_SOCKET == sServer) { cout WSACleanup();//释放套接字资源; return -1; } //服务器套接字地址 addrServ.sin_family = AF_INET; addrServ.sin_port = htons(4999); addrServ.sin_addr.s_addr = INADDR_ANY; //绑定套接字 retVal = bind(sServer, (LPSOCKADDR)&addrServ, sizeof(SOCKADDR_IN)); if(SOCKET_ERROR == retVal) { cout closesocket(sServer); //关闭套接字 WSACleanup(); //释放套接字资源; return -1; } //开始监听 retVal = listen(sServer, 1); if(SOCKET_ERROR == retVal) { cout closesocket(sServer); //关闭套接字 WSACleanup(); //释放套接字资源; return -1; } //接受客户端请求 sockaddr_in addrClient; int addrClientlen = sizeof(addrClient); sClient = accept(sServer,(sockaddr FAR*)&addrClient, &addrClientlen); if(INVALID_SOCKET == sClient) { cout closesocket(sServer); //关闭套接字 WSACleanup(); //释放套接字资源; return -1; } while(true) { //接收客户端数据 ZeroMemory(buf, BUF_SIZE); retVal = recv(sClient, buf, BUF_SIZE, 0); if (SOCKET_ERROR == retVal) { cout closesocket(sServer); //关闭套接字 closesocket(sClient); //关闭套接字 WSACleanup(); //释放套接字资源; return -1; } if(buf[0] == '0') break; cout cout cin >> sendBuf; send(sClient, sendBuf, strlen(sendBuf), 0); } //退出 closesocket(sServer); //关闭套接字 closesocket(sClient); //关闭套接字 WSACleanup(); //释放套接字资源; return 0; } 客户端程序:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172#include "winsock2.h"#include #pragma comment(lib, "ws2_32.lib") using namespace std; BOOL RecvLine(SOCKET s, char* buf); //读取一行数据 int main(int argc, char* argv[]) { const int BUF_SIZE = 64; WSADATA wsd; //WSADATA变量 SOCKET sHost; //服务器套接字 SOCKADDR_IN servAddr; //服务器地址 char buf[BUF_SIZE]; //接收数据缓冲区 char bufRecv[BUF_SIZE]; int retVal; //返回值//初始化套结字动态库 if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) { cout return -1; }//创建套接字 sHost = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(INVALID_SOCKET == sHost) { cout WSACleanup();//释放套接字资源 return -1; }//设置服务器地址和端口 servAddr.sin_family =AF_INET; servAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); servAddr.sin_port = htons((short)4999); int nServAddlen = sizeof(servAddr);//连接服务器 retVal=connect(sHost,(LPSOCKADDR)&servAddr, sizeof(servAddr)); if(SOCKET_ERROR == retVal) { cout closesocket(sHost); //关闭套接字 WSACleanup(); //释放套接字资源 return -1; } while(true) {//向服务器发送数据 ZeroMemory(buf, BUF_SIZE); cout cin >> buf; retVal = send(sHost, buf, strlen(buf), 0); if (SOCKET_ERROR == retVal) { cout closesocket(sHost); //关闭套接字 WSACleanup(); //释放套接字资源 return -1; }//RecvLine(sHost, bufRecv); ZeroMemory(bufRecv, BUF_SIZE); recv(sHost, bufRecv,BUF_SIZE , 0); // 接收服务器端的数据, 只接收5个字符 cout cout}//退出 closesocket(sHost); //关闭套接字 WSACleanup(); //释放套接字资源 return 0; }
SOCKET编程里send 和Receive函数的使用
这可是我自己总结的,LZ不要误会哦~~!1.简单服务器 //#include //#pragma comment(lib,"WS2_32.lib") WSADATA sServer,sClient; chat buf[1024]; int retVal; if(WSAStartup(MAKEWORD(2,2),&wsd)!=0) { return -1;//失败 } sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(INVALID_SOCKET==sServer) { WSACleanup(); return -1;//创建套接字失败 } SOCKADDR_IN addrServ; addrServ.sin_family=AF_INET; addrServ.sin_port=htons(%%1); addrServ.sin_addr.s_addr=INADDR_ANY; retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN)); if(SOCKET_ERROR==retVal) { closesocket(sServer); WSACleanup(); return -1;//绑定套接字失败 } retVal=listen(sServer,1); if(SOCKET_ERROR==retVal) { closesocket(sServer); WSACleanup(); return -1;//开始监听失败 } socketaddr_in addrClient; int addrClientlen=sizeof(addrClient); sClient=accept(sServer(sockaddr FAR*)&addrClient,&addClientlen); if(INVALID_SOCKET==sClient) { closesocket(sServer); WSACleanup(); return -1;//开始接受客户端连接失败 } ZeroMemory(buf,sizeof(buf)); retVal=recv(sClient,buf,sizeof(buf)); if(SOCKET_ERROR==retVal) { closesocket(sServer); closesocket(sClient); WSACleanup(); return -1;//接收数据失败 } CString %%2(buf); closesocket(sServer); closesocket(sClient); WSACleanup(); 2.简单客户端 //#include //#pragma comment(lib,"WS2_32.lib") WSADATA sHost; SOCKADDR_IN addrServ; chat buf[1024]; int retVal; if(WSAStartup(MAKEWORD(2,2),&wsd)!=0) { return -1;//失败 } sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(INVALID_SOCKET==sHost) { WSACleanup(); return -1;//创建套接字失败 } servAddr.sin_family=AF_INET; servAddr.sin_addr.s_addr=inet_addr(%%1); servAddr.sin_port=htons((short)%%2); int nServAddlen=size(servAddr); retVal=connect(sHost,(LPSOCKADDR)&servAddr,sizeof(servAddr)); if(sOCKET_ERROR==retVal) closesocket(sHost); WSACleanup(); return -1;//连接服务器失败 } ZeroMemory(buf,sizeof(buf)); strcpy(buf,%%3); retVal=send(sHost,buf,sizeof(buf),0); if(SOCKET_ERROR==retVal) { closesocket(sHost); WSACleanup(); return -1;//向服务器发送数据失败 } closesocket(sHost); WSACleanup(); 3.获得本机IP //#include //#pragma comment(lib,"WS2_32.lib") /* if(WSAStartup(MAKEWORD(2,2),&wsd)!=0) { return -1;//失败 } */ //#pragma comment(lib,"WS2_32.lib") char szHostname[100],szHostaddress[200]; if(gethostname(szHostname,info(szHostname))!=SOCKET_ERROR) { HOSTENT *pHostEnt=gethostbyname(szHostname); if(pHostEnt!=NULL){ sprintf(szHostaddress,"%d.%d.%d.%d", ( pHostEnt->h_addr_list[0][0]&0x00ff ), ( pHostEnt->h_addr_list[0][1]&0x00ff ), ( pHostEnt->h_addr_list[0][2]&0x00ff ), ( pHostEnt->h_addr_list[0][3]&0x00ff )); } } else return; CString %%1(szHostaddress);
c++ 多线程编程 CreatThread
#include "windows.h"#include int num = 100; //模拟售票系统,共100张票DWORD WINAPI Fun1(LPVOID lpParameter){ while (num != 0){coutnum -= 1;Sleep(500);}return 0;} DWORD WINAPI Fun2(LPVOID lpParameter) { while (num != 0){coutnum -= 1;Sleep(500);}return 0;} void main() { HANDLE thread1;HANDLE thread2;thread1=CreateThread(NULL,0,Fun1,NULL,0,NULL); thread2=CreateThread(NULL,0,Fun2,NULL,0,NULL); while (num != 0){coutnum -= 1;Sleep(1000);}Sleep(3000); //3s后关闭线程CloseHandle(thread1); CloseHandle(thread2); }
【makeword
可以建立一个连接,然后在发送数据的时候在数据包中作个标记,表明时那个编辑框发送的。
也可以建立几个链接,对应不同的编辑框,各发各的。
如果要实现同时发送数据的话可以使用多个线程完成。
用到得函数就是socket的几个API。
连接ws2_32.lib scoket 建立套接字bind绑定套接字listen套接字监听accept接受连接请求connect发起连接请求send发送数据recv接收数据如果你懂网络编程的话,这些都是常用的API
Socket编程中到底什么是套接字?
简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。
多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。
为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。
区分不同应用程序进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。
Socket原意是 “插座”。
通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
-- win API socket 本文所谈到的Socket函数如果没有特别说明,都是指的Windows Socket API。
一、WSAStartup函数 int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); 使用Socket的程序在使用Socket之前必须调用WSAStartup函数。
该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本、低位字节指明主版本;操作系统利用第二个参数返回请求的Socket的版本信息。
当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然后绑定找到的Socket库到该应用程序中。
以后应用程序就可以调用所请求的 Socket库中的其它Socket函数了。
该函数执行成功后返回0。
例:假如一个程序要使用2.1版本的Socket,那么程序代码如下 wVersionRequested = MAKEWORD( 2, 1 ); err = WSAStartup( wVersionRequested, &wsaData ); 二、WSACleanup函数 int WSACleanup (void); 应用程序在完成对请求的Socket库的使用后,要调用WSACleanup函数来解除与Socket库的绑定并且释放Socket库所占用的系统资源。
三、socket函数 SOCKET socket( int af, int type, int protocol ); 应用程序调用socket函数来创建一个能够进行网络通信的套接字。
第一个参数指定应用程序使用的通信协议的协议族,对于TCP/IP协议族,该参数置PF_INET;第二个参数指定要创建的套接字类型,流套接字类型为SOCK_STREAM、数据报套接字类型为SOCK_DGRAM;第三个参数指定应用程序所使用的通信协议。
该函数如果调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。
套接字描述符是一个整数类型的值。
每个进程的进程空间里都有一个套接字描述符表,该表中存放着套接字描述符和套接字数据结构的对应关系。
该表中有一个字段存放新创建的套接字的描述符,另一个字段存放套接字数据结构的地址,因此根据套接字描述符就可以找到其对应的套接字数据结构。
每个进程在自己的进程空间里都有一个套接字描述符表但是套接字数据结构都是在操作系统的内核缓冲里。
下面是一个创建流套接字的例子: struct protoent *ppe; ppe=getprotobyname("tcp"); SOCKET ListenSocket=socket(PF_INET,SOCK_STREAM,ppe->p_proto); 四、closesocket函数 int closesocket( SOCKET s ); closesocket函数用来关闭一个描述符为s套接字。
由于每个进程中都有一个套接字描述符表,表中的每个套接字描述符都对应了一个位于操作系统缓冲区中的套接字数据结构,因此有可能有几个套接字描述符指向同一个套接字数据结构。
套接字数据结构中专门有一个字段存放该结构的被引用次数,即有多少个套接字描述符指向该结构。
当调用closesocket函数时,操作系统先检查套接字数据结构中的该字段的值,如果为1,就表明只有一个套接字描述符指向它,因此操作系统就先把s在套接字描述符表中对应的那条表项清除,并且释放s对应的套接字数据结构;如果该字段大于1,那么操作系统仅仅清除s在套接字描述符表中的对应表项,并且把s对应的套接字数据结构的引用次数减1。
closesocket函数如果执行成功就返回0,否则返回SOCKET_ERROR。
五、send函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。
客户程序一般用send函数向服务器发送请求,而服务器则通常用 send函数来向客户程序发送应答。
该函数的第一个参数指定发送端套接字描述符;第二个参数指明一个存放应用程序要发送数据的缓冲区;第三个参数指明实际要发送的数据的字节数;第四个参数一般置0。
这里只描述同步Socket的send函数的执行流程。
当调用该函数时,send先比较待发送数据的长度 len和套接字s的发送缓冲区的长度,如果len大于s的发送缓冲区的长度,该函数返回SOCKET_ERROR;如果len小于或者等于s的发送缓冲区的长度,那么send先检查协议是否正在发送s的发送缓冲中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送s的发送缓冲中的数据或者s的发送缓冲中没有数据,那么send就比较s的发送缓冲区的剩余空间和len,如果len大于剩余空间大小send就一直等待...
转载请注明出处51数据库 » makeword( 2 0 )