资源简介
利用WinSock来实现双机通信,理解TCP状态机图。
要求使用WinSock编程,采用其中的TCP面向连接方式,实现文本数据的交换。
代码片段和文件信息
// shuangjitongxin.cpp : Defines the entry point for the console application.
//
#include
#include
#include
#include
#pragma comment(lib “ws2_32.lib“)
using namespace std;
int InputType();
void ServerProc();
void ClientProc();
void TCPSvr();
void TCPCli();
string strType;
WSADATA wsadata;
char netType;
const int defaultPort = 1005;
const int defaultBacklog = 5;
int main(int argc char* argv[])
{
while(InputType()<0);
if(strType==“s“)
ServerProc();
else if(strType==“c“)
ClientProc();
else
exit(-1);
while(1)
{
};
return 0;
}
void ServerProc()
{
if(WSAStartup(MAKEWORD(20) &wsadata)!=0){
cout<<“WSAStartup erro\n“;
WSACleanup();
exit(-1);
}
cout<<“tcp Server...\n“;
TCPSvr();
}
void ClientProc()
{
if(WSAStartup(MAKEWORD(20) &wsadata)!=0){
cout<<“WSAStartup erro\n“;
WSACleanup();
exit(-1);
}
cout<<“tcp client...\n“;
TCPCli();
}
int InputType()
{
cout<<“svr or cli(s/c):“;
cin>>strType;
if(strType==“s“){
return 0;
}
else if(strType==“c“){
return 1;
}
else
return -1;
}
void TCPSvr()
{
struct sockaddr_in addr accAddr;
int sock accSock;
memset(&addr 0 sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = defaultPort;
if((sock=socket(PF_INET SOCK_STREAM IPPROTO_TCP))==INVALID_SOCKET){
WSACleanup();
exit(-1);
}
if(bind(sock (struct sockaddr*)&addrsizeof(addr))==SOCKET_ERROR){
WSACleanup();
exit(-1);
}
if(listen(sockdefaultBacklog)==SOCKET_ERROR){
WSACleanup();
exit(-1);
}
// cout<<“listening...\n“;
int size=sizeof(struct sockaddr);
if((accSock = accept(sock (struct sockaddr*) &accAddr &size))!=INVALID_SOCKET){
char FAR* strAddr = inet_ntoa(*((in_addr*)&(accAddr.sin_addr)));
cout<<“connected by “< }
closesocket(accSock);
// closesocket(sock);
while(1){
if(listen(sockdefaultBacklog)==SOCKET_ERROR){
WSACleanup();
cout<<“listen error\n“;
}
// else
// cout<<“listening...\n“;
if((accSock = accept(sock (struct sockaddr*) &accAddr &size))==INVALID_SOCKET){
WSACleanup();
cout<<“accpt error\n“;
}
// else
// cout<<“accpted...\n“;
char* msg=new char[500];
int msgLen = recv(accSock msg5000);
msg[msgLen]=‘\0‘;
if(msgLen>0)
cout< delete[] msg;
msg = NULL;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 540807 2009-06-29 20:50 双机通信课程设计\shuangjitongxin\Debug\shuangjitongxin.exe
文件 795940 2009-06-29 20:50 双机通信课程设计\shuangjitongxin\Debug\shuangjitongxin.ilk
文件 210205 2009-06-29 20:50 双机通信课程设计\shuangjitongxin\Debug\shuangjitongxin.obj
文件 5389200 2009-06-29 20:50 双机通信课程设计\shuangjitongxin\Debug\shuangjitongxin.pch
文件 1106944 2009-06-29 20:50 双机通信课程设计\shuangjitongxin\Debug\shuangjitongxin.pdb
文件 2194 2009-06-29 13:47 双机通信课程设计\shuangjitongxin\Debug\StdAfx.obj
文件 189440 2009-06-29 20:56 双机通信课程设计\shuangjitongxin\Debug\vc60.idb
文件 290816 2009-06-29 20:50 双机通信课程设计\shuangjitongxin\Debug\vc60.pdb
文件 1262 2009-06-29 13:46 双机通信课程设计\shuangjitongxin\ReadMe.txt
文件 4910 2009-06-29 20:50 双机通信课程设计\shuangjitongxin\shuangjitongxin.cpp
文件 3509 2009-06-29 20:56 双机通信课程设计\shuangjitongxin\shuangjitongxin.dsp
文件 538 2009-06-29 20:57 双机通信课程设计\shuangjitongxin\shuangjitongxin.dsw
文件 50176 2009-06-29 20:57 双机通信课程设计\shuangjitongxin\shuangjitongxin.ncb
文件 48640 2009-06-29 20:57 双机通信课程设计\shuangjitongxin\shuangjitongxin.opt
文件 264 2009-06-29 20:56 双机通信课程设计\shuangjitongxin\shuangjitongxin.plg
文件 302 2009-06-29 13:46 双机通信课程设计\shuangjitongxin\StdAfx.cpp
文件 667 2009-06-29 13:46 双机通信课程设计\shuangjitongxin\StdAfx.h
文件 122368 2010-04-12 21:43 双机通信课程设计\双机通信课程设计报告.doc
目录 0 2009-06-29 20:53 双机通信课程设计\shuangjitongxin\Debug
目录 0 2009-06-29 20:53 双机通信课程设计\shuangjitongxin
目录 0 2010-04-12 21:43 双机通信课程设计
----------- --------- ---------- ----- ----
8758182 21
- 上一篇:最小生成树图形化实现
- 下一篇:C语言下CryptoAPI加密系统
相关资源
- 使用c++做好看的界面
- 特征码搜索基址 c/c++源代码
- C++ 数学计算库 TooN
- FLUENT中的C++编程
- C++科学计算器
- c c++嵌入式系统编程 pdf 中文版+英文版
- c++数据结构课程设计-校园最短路径采
- AES算法加密解密C++源码及程序完整的
- C++语言学习教程
- C++MFC实现的绘制正方体的三视图
- C++11教程参考书
- The C++ Programming Language习题答案清晰版
- 最短寻道时间优先和扫描算法C++实现
- LL(1)语法分析器C++版
- vc++使用libcurl文件,支持断点续传,支
- 自绘按钮的实现,对VC++6.0控件派生学
- OpenCV漫水填充程序 by浅墨
- OpenCV图像的膨胀与腐蚀程序 by浅墨
- 我用VS2010 C++和windows API制作的坦克大
- 算术编码C++ 源代码
- C++开发漂亮的软件界面
- vc++收发电子邮件系统
- C++ CAsyncSocket类聊天室程序
- C++课程设计 学籍管理系统82049
- mfc酒店管理系统C++编写,程序简单,
- C++编写Genesis200自动化
- C++实现线程池源文件
-
最简单的c++ xm
l类,跨平台使用 - c++ 、MFC 实现中点画圆算法及工程代码
- 用C++语言编写一个班级信息管理系统
评论
共有 条评论