资源简介
利用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加密系统
相关资源
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- socket客户端.c
- socket服务端.c
- FTP客户端源码(c++)
评论
共有 条评论