青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-167  評論-8  文章-0  trackbacks-0

socket編程(udp tcp)代碼備忘 C++/C


sockets(套接字)編程有三種,流式套接字(SOCK_STREAM),數(shù)據(jù)報套接字(SOCK_DGRAM),原始套接字(SOCK_RAW); 基于TCP的socket編程是采用的流式套接字(SOCK_STREAM)。基于UDP采用的數(shù)據(jù)報套接字(SOCK_DGRAM).
1.TCP流式套接字的編程步驟
在使用之前須鏈接庫函數(shù):工程->設(shè)置->Link->輸入ws2_32.lib,OK!
服務(wù)器端程序:
1、加載套接字庫
2、創(chuàng)建套接字(socket)。 
3、將套接字綁定到一個本地地址和端口上(bind)。
4、將套接字設(shè)為監(jiān)聽模式,準(zhǔn)備接收客戶請求(listen)。
5、等待客戶請求到來;當(dāng)請求到來后,接受連接請求,返回一個新的對應(yīng)于此次連接的套接字(accept)。
6、用返回的套接字和客戶端進(jìn)行通信(send/recv)。
7、返回,等待另一客戶請求。
8、關(guān)閉套接字。
客戶端程序:
1、加載套接字庫
2、創(chuàng)建套接字(socket)。 
3、向服務(wù)器發(fā)出連接請求(connect)。
4、和服務(wù)器端進(jìn)行通信(send/recv)。
5、關(guān)閉套接字。
服務(wù)器端代碼如下:
#include <Winsock2.h>//加裁頭文件
#include <stdio.h>//加載標(biāo)準(zhǔn)輸入輸出頭文件

void main()
{
WORD wVersionRequested;//版本號
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );//1.1版本的套接字

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}//加載套接字庫,加裁失敗則返回

if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return; 
}//如果不是1.1的則退出
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);//創(chuàng)建套接字(socket)。

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//轉(zhuǎn)換Unsigned short為網(wǎng)絡(luò)字節(jié)序的格式
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
//將套接字綁定到一個本地地址和端口上(bind)
listen(sockSrv,5);//將套接字設(shè)為監(jiān)聽模式,準(zhǔn)備接收客戶請求(listen)。

SOCKADDR_IN addrClient;//定義地址族
int len=sizeof(SOCKADDR);//初始化這個參數(shù),這個參數(shù)必須被初始化

while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);accept的第三個參數(shù)一定要有初始值。
//等待客戶請求到來;當(dāng)請求到來后,接受連接請求,返回一個新的對應(yīng)于此次連接的套接字(accept)。
//此時程序在此發(fā)生阻塞
char sendBuf[100];
sprintf(sendBuf,"Welcome %s to http://www.sunxin.org",
    inet_ntoa(addrClient.sin_addr));
//用返回的套接字和客戶端進(jìn)行通信(send/recv)。
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
recv(sockConn,recvBuf,100,0);
printf("%s\n",recvBuf);
closesocket(sockConn);//關(guān)閉套接字。等待另一個用戶請求
}
}

客戶端代碼如下:
#include <Winsock2.h>
#include <stdio.h>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );加載套接字庫
if ( err != 0 ) {
return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return; 
}
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);創(chuàng)建套接字(socket)。

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));向服務(wù)器發(fā)出連接請求(connect)。

char recvBuf[100];和服務(wù)器端進(jìn)行通信(send/recv)。
recv(sockClient,recvBuf,100,0);
printf("%s\n",recvBuf);
send(sockClient,"This is lisi",strlen("This is lisi")+1,0);

closesocket(sockClient);關(guān)閉套接字。
WSACleanup();//必須調(diào)用這個函數(shù)清除參數(shù)
}

2.UDP型套接字。
服務(wù)器端(接收端)程序:
1、創(chuàng)建套接字(socket)。 
2、將套接字綁定到一個本地地址和端口上(bind)。
3、等待接收數(shù)據(jù)(recvfrom)。
4、關(guān)閉套接字。
客戶端(發(fā)送端)程序:
1、創(chuàng)建套接字(socket)。 
2、向服務(wù)器發(fā)送數(shù)據(jù)(sendto)。
3、關(guān)閉套接字。
服務(wù)器端代碼:
#include <Winsock2.h>
#include <stdio.h>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return; 
}

SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
char recvBuf[100];

recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);
printf("%s\n",recvBuf);
closesocket(sockSrv);
WSACleanup();
}

客戶端代碼:
#include <Winsock2.h>
#include <stdio.h>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return; 
}

SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);

sendto(sockClient,"Hello",strlen("Hello")+1,0,
(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
closesocket(sockClient);
WSACleanup();
}
===========下面是字符界面下的一個簡單UDP聊天程序=====
服務(wù)器端:==============================
#include <stdio.h>
#include <WINSOCK2.H>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return; 
}

SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6101);

bind(sockSrv,(sockaddr*)&addrSrv,sizeof(sockaddr));

char sendBuf[100];
char recvBuf[100];
char tempBuf[100];
int len=sizeof(sockaddr);
    SOCKADDR_IN addrClient;
while(1)
{

recvfrom(sockSrv,tempBuf,strlen(tempBuf),0,(sockaddr*)&addrClient,&len);
if('q'!=tempBuf[0])
{
    sprintf(recvBuf,"%s say: %s",inet_ntoa(addrClient.sin_addr),tempBuf);
      printf("%s\n",recvBuf);
      printf("please input your data: ");
      gets(sendBuf);
      sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(sockaddr*)&addrClient,len);
}
else
{
    printf("%s request to quit the chat platform.\n",
    inet_ntoa(addrClient.sin_addr));
    sendto(sockSrv,"q",strlen("q")+1,0,(sockaddr*)&addrClient,len);
    break;
}
}
closesocket(sockSrv);
    WSACleanup();

}

客戶端:===============================
#include <stdio.h>
#include <WINSOCK2.H>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1 );

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return; 
}
SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);

SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
//htonl htons inet_addr inet_ntoa
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6101);

char sendBuf[100];
char tempBuf[100];
char recvBuf[100];
int len=sizeof(sockaddr);

while(1)
{
printf("please input your data: ");
gets(sendBuf);
sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(sockaddr*)&addrSrv,len);
recvfrom(sockClient,tempBuf,strlen(tempBuf),0,(sockaddr*)&addrSrv,&len);
if('q'!=tempBuf[0])
{
    sprintf(recvBuf,"%s say: %s",inet_ntoa(addrSrv.sin_addr),tempBuf);
    printf("%s\n",recvBuf);
}
else
{
    printf("the server has been closed!\n");
    sendto(sockClient,"q",strlen("q")+1,0,(sockaddr*)&addrSrv,len);
    break;
}

}

closesocket(sockClient);
WSACleanup();

posted on 2011-04-06 10:44 老馬驛站 閱讀(3115) 評論(0)  編輯 收藏 引用 所屬分類: c++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区高清| 国内精品久久久久久久果冻传媒| 久久久精品一品道一区| 欧美日韩另类综合| 欧美11—12娇小xxxx| 国产精品一级| 夜夜嗨av一区二区三区中文字幕| 永久域名在线精品| 性做久久久久久| 亚洲综合国产| 欧美日韩三级在线| 亚洲高清成人| 在线看无码的免费网站| 欧美一区二区观看视频| 小黄鸭视频精品导航| 国产精品激情电影| 999在线观看精品免费不卡网站| 亚洲福利在线视频| 久久综合网hezyo| 裸体女人亚洲精品一区| 国户精品久久久久久久久久久不卡| 亚洲午夜精品一区二区| 亚洲欧美一区二区三区极速播放| 欧美—级高清免费播放| 欧美激情一区二区三区在线视频| 精品福利免费观看| 久久久久在线观看| 欧美va亚洲va日韩∨a综合色| 悠悠资源网久久精品| 久久久一区二区| 免费在线欧美视频| 亚洲黄色免费电影| 欧美日韩不卡| 亚洲香蕉视频| 久久久久久一区| 樱花yy私人影院亚洲| 免费在线播放第一区高清av| 欧美91福利在线观看| 最新高清无码专区| 欧美日韩精品一本二本三本| 中文一区字幕| 久久久不卡网国产精品一区| 亚洲第一页在线| 欧美精品在线免费播放| 一区二区三区黄色| 久久精品动漫| 91久久线看在观草草青青| 欧美日韩精品中文字幕| 亚洲欧美综合另类中字| 免费黄网站欧美| 中文精品在线| 国产欧美精品国产国产专区| 麻豆国产精品va在线观看不卡| 亚洲精品国产无天堂网2021| 午夜精品国产精品大乳美女| 伊人久久婷婷| 欧美午夜精品久久久久久久| 亚洲欧美国产毛片在线| 欧美高潮视频| 欧美一区二视频| 91久久综合| 国产一区二区三区观看| 欧美精品色网| 久久精品免费| 亚洲视频日本| 亚洲国产美女| 午夜视频在线观看一区| 91久久在线观看| 国产日韩欧美a| 欧美片在线观看| 久久久久久婷| 亚洲一区免费网站| 亚洲级视频在线观看免费1级| 久久国产精品久久久久久久久久| 亚洲美女精品一区| 韩国久久久久| 国产精品亚洲成人| 欧美日韩国产成人在线观看| 久久精品国产清自在天天线| 一区二区三区日韩欧美精品| 亚洲第一在线视频| 久久在线视频在线| 欧美亚洲一级| 亚洲午夜久久久久久久久电影院 | 欧美国产日本在线| 欧美在线视频观看| 亚洲午夜一级| 99精品欧美一区二区蜜桃免费| 蜜臀久久99精品久久久久久9| 午夜在线电影亚洲一区| 亚洲小说春色综合另类电影| 亚洲美女中文字幕| 亚洲黄页一区| 亚洲高清资源综合久久精品| 韩国在线视频一区| 国产主播喷水一区二区| 国产伦精品一区二区三区四区免费| 欧美色精品天天在线观看视频| 欧美承认网站| 欧美激情第9页| 欧美国产日本韩| 欧美精品三级日韩久久| 欧美精品v日韩精品v韩国精品v| 免费观看成人网| 蜜月aⅴ免费一区二区三区| 久久久国际精品| 久久久噜噜噜久噜久久| 欧美在线短视频| 欧美在线亚洲综合一区| 久久精品欧美日韩| 久久一区二区视频| 久色成人在线| 欧美大成色www永久网站婷| 欧美黄色精品| 欧美欧美在线| 国产精品二区在线| 国产欧美一区二区精品性色| 国产欧美精品一区| 海角社区69精品视频| 亚洲大胆女人| 日韩视频在线免费| 亚洲男人第一av网站| 欧美亚洲一区二区在线| 久久精品五月婷婷| 欧美大色视频| 一区二区三区日韩欧美| 亚洲欧美国产制服动漫| 久久大逼视频| 欧美国产日韩视频| 欧美体内she精视频在线观看| 国产乱码精品| 亚洲电影视频在线| 一区二区三区精品视频在线观看| 亚洲一区二区三区四区五区黄| 欧美一区二区三区免费观看视频| 久久手机免费观看| 91久久黄色| 欧美一区二区视频观看视频| 久久在线免费| 国产精品高清在线观看| 国产日韩在线一区二区三区| 91久久精品美女高潮| 亚洲综合色噜噜狠狠| 久久婷婷丁香| 日韩写真视频在线观看| 欧美一区二区三区视频在线观看 | 99精品视频一区二区三区| 午夜精品免费在线| 欧美高清视频免费观看| 亚洲一级黄色av| 欧美大片免费观看在线观看网站推荐| 欧美视频免费在线观看| 一区二区三区我不卡| 亚洲一区久久久| 欧美电影免费观看高清| 亚洲一区二区三区高清| 欧美韩日一区二区三区| 国产一区二区电影在线观看| 一级成人国产| 欧美激情 亚洲a∨综合| 欧美一级淫片aaaaaaa视频| 欧美福利一区| 在线观看视频一区二区欧美日韩| 亚洲综合电影一区二区三区| 亚洲高清在线观看一区| 欧美在线亚洲在线| 国产精品夜夜夜| 夜夜嗨av一区二区三区中文字幕| 久久久久久穴| 午夜一区二区三区不卡视频| 欧美精品二区| 在线欧美亚洲| 久久日韩粉嫩一区二区三区| 亚洲性感激情| 欧美午夜宅男影院在线观看| 日韩午夜精品| 亚洲国产日韩欧美在线99| 老色批av在线精品| 一区二区三区在线视频播放| 久久精品日韩一区二区三区| 亚洲一区二区在线视频| 欧美日韩国产电影| 一本一道久久综合狠狠老精东影业| 美国成人毛片| 久久久国产视频91| 国产一区二区在线观看免费播放 | 久久―日本道色综合久久| 亚洲自拍偷拍麻豆| 欧美午夜不卡在线观看免费| 99在线热播精品免费| 亚洲人成亚洲人成在线观看图片| 美日韩精品免费| 亚洲国产精品一区二区www在线| 欧美成人精品激情在线观看| 久久人人97超碰人人澡爱香蕉| 精品1区2区| 亚洲高清123| 欧美另类综合| 亚洲一区二区三区免费视频| 亚洲视屏一区|