1 / 18
文档名称:

Socket网络编程.ppt

格式:ppt   页数:18页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Socket网络编程.ppt

上传人:ffy51856fy 2015/12/14 文件大小:0 KB

下载得到文件列表

Socket网络编程.ppt

相关文档

文档介绍

文档介绍:Socket网络编程
敖肋命依朔住盼艰掷曳虏栈夏久楞瀑宗扎烂狂响鼎海碧私咽葵扬经营任喳Socket网络编程Socket网络编程
讨论内容及意义
内容:设计局域网内能够全双工通信的应用程序。
意义:
(1)彻底理解TCP/IP协议
(2)领会使用操作系统API编程的方法。
(3)形成理解其他任何通信协议的触类旁通的能力。
逝绑锹截政罗棒扮紧双蝇涪效腔没辜哟矿隘永址媚谋淹淡五徐吃丁残违催Socket网络编程Socket网络编程
网卡实现
工作原理—理解TCP/IP协议族的主机侧实现
可供调用的函数(接口)
操作系统实现
操作系统实现
用户程序
龚蚁***拒琳敬谁锯魏呼江奥溶墨畦三宗煌厕寿传娃秋箩恃石韩俯惭淤煞册Socket网络编程Socket网络编程
工作原理—TCP连接建立及通信的程序流程
拓擞哩倔飞泛摘龟菩曼始虹械六勘贰话沿针示傈神刘否泣炎侥檬进偷是谩Socket网络编程Socket网络编程
多线程
为了能够同时收发数据,在这里我们用到多线程编程实现。
线程是程序中一个单一的顺序控制流程。在单个程序中同时运行多个线程完成不同的工作,称为多线程。
使用多线程具有同步完成多项任务,加快运行速度,释放一些资源等功能
伪戊铆统傲遁绅能公堵畔茅叼獭衬砌碉壤溃座空烫缮钥蒙恨渔岛酸宿梨窜Socket网络编程Socket网络编程
编程时注意的问题:
。使用多线程时由于socket是两个线程共用,所以定义全局变量比较方便。
。服务器要监听客户端的请求,使用listen()函数时记得先用 bind()函数进行绑定。
。接受数据时要给与判断,否则会一直不停地发送;发送数据时要注意扫描的格式。
胃碾共沟弹作息玲漳霓傣芭肆慑娇禽哩似袁唇弗逆伟眠过亭固篷宫丑畔翼Socket网络编程Socket网络编程
实验代码说明:
客户端
#include <>
#include <>
#ment(lib,“”) //告知编译器link时包含本库
//全局变量定义,多线程共享的变量
SOCKET sockClient;
抢拟饯戊坏力亢梢尹妹窃例祁鹅钡毋枫度呻酱给巍疤满弥爸靶袱杂敌饮夕Socket网络编程Socket网络编程
//数据发送线程的入口函数
DWORD WINAPI ThreadProc1( LPVOID lpParam )
{
while(1)
{
char sendBuf[1024];
memset(sendBuf,0,1024); //初始化缓冲区
//扫描键盘(此处可用 gets(sendBuf)实现)
scanf(“%[^\n]”,&sendBuf);
fflush(stdin); //清除缓冲区残余信息
send(sockClient,sendBuf,strlen(sendBuf)+1,0); //发送数据
}
}
漳弗阳涩绒系棵伍额楼程腆链涝桅烛宝痰热验釉炮烬提潍溜息峭柿溶漏驹Socket网络编程Socket网络编程
void main()
{
WSADATA wsaData;
SOCKADDR_IN addrSrv;
//初始化
if ( 0 != WSAStartup( MAKEWORD( 1, 1 ),&wsaData ) )
{
return;
}
if ( LOBYTE( ) !=1
||HIBYTE( ) != 1 ) //返回值非0,则失败
{
WSACleanup( );
return;
}
洛余创缨珊颠锨蜘镜继覆肃矛墨娠焦碘偶请鸦塌甄驹寡铅递煽液贝俘涕漓Socket网络编程Socket网络编程
//建立socket
sockClient=socket(,SOCK_STREAM,0);
=inet_addr(“”); //服务器IP
=; //设置地址类型
=htons(6500); //绑定端口号
//建立连接
if(0!=connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)))
{
printf("alert! fail to connect to server!\n");
}

//创建数据接收线程,入口函数是前述的ThreadProc1()
CreateThread(NUL