请问如何利用VC++6.0实现计算机与蓝牙设备的通讯?
不是.我是想用vc++编写一个通过蓝牙发送数据的程序~
急!求教!VC++6.0实现蓝牙通讯
答案:2 悬赏:0 手机版
解决时间 2021-03-21 04:13
- 提问者网友:雾里闻花香
- 2021-03-20 04:43
最佳答案
- 五星知识达人网友:逐風
- 2021-03-20 04:59
如果是计算机要连接蓝牙设备,在计算机里面找到蓝牙的图表,双击后就会出现一个蓝牙设备向导,你点添加电脑就会自动搜索电脑周围的蓝牙设备,配对成功后就可以进行蓝牙通讯了,不过还有一个就是配对成功后点一个允许该设备任何时候连接,这样就可以很好的使用了
全部回答
- 1楼网友:青灯有味
- 2021-03-20 05:38
1、一个端口可以为多个人服务的,只要你们的端口是一致的。
2、界面加载时不需要建立连接,只有发消息传文件的时候才建立连接。登录以后,开启一个监听的线程来监听发来的消息就行了,登录时要是广播的话就会给这个端口的所有用户发消息。
3、udp的话send发送以后,主窗体启动的监听程序会自己receive,如果是tcp的话,需要建立连接以后再receive。
给你个最简单的 服务器端客户端程序 是在控制台下面开发
服务器端
// server.cpp : defines the entry point for the console application.
//
#include "stdafx.h"
#include "winsock2.h"
#pragma comment(lib, "ws2_32.lib")
#include
using namespace std;
int _tmain(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 << "wsastartup failed!" << endl;
return 1;
}
//创建套接字
sserver = socket(af_inet, sock_stream, ipproto_tcp);
if(invalid_socket == sserver)
{
cout << "socket failed!" << endl;
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 << "bind failed!" << endl;
closesocket(sserver); //关闭套接字
wsacleanup(); //释放套接字资源;
return -1;
}
//开始监听
retval = listen(sserver, 1);
if(socket_error == retval)
{
cout << "listen failed!" << endl;
closesocket(sserver); //关闭套接字
wsacleanup(); //释放套接字资源;
return -1;
}
//接受客户端请求
sockaddr_in addrclient;
int addrclientlen = sizeof(addrclient);
sclient = accept(sserver,(sockaddr far*)&addrclient, &addrclientlen);
if(invalid_socket == sclient)
{
cout << "accept failed!" << endl;
closesocket(sserver); //关闭套接字
wsacleanup(); //释放套接字资源;
return -1;
}
while(true){
//接收客户端数据
zeromemory(buf, buf_size);
retval = recv(sclient, buf, buf_size, 0);
if (socket_error == retval)
{
cout << "recv failed!" << endl;
closesocket(sserver); //关闭套接字
closesocket(sclient); //关闭套接字
wsacleanup(); //释放套接字资源;
return -1;
}
if(buf[0] == '0')
break;
cout << "客户端发送的数据: " << buf <> sendbuf;
send(sclient, sendbuf, strlen(sendbuf), 0);
}
//退出
closesocket(sserver); //关闭套接字
closesocket(sclient); //关闭套接字
wsacleanup(); //释放套接字资源;
return 0;
}
客户端
// client.cpp : defines the entry point for the console application.
//
#include "stdafx.h"
#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 << "wsastartup failed!" << endl;
return -1;
}
//创建套接字
shost = socket(af_inet, sock_stream, ipproto_tcp);
if(invalid_socket == shost)
{
cout << "socket failed!" << endl;
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 << "connect failed!" << endl;
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 << "send failed!" << endl;
closesocket(shost); //关闭套接字
wsacleanup(); //释放套接字资源
return -1;
}
//recvline(shost, bufrecv);
recv(shost, bufrecv,5 , 0); // 接收服务器端的数据, 只接收5个字符
cout << endl <<"从服务器接收数据:" << bufrecv;
}
//退出
closesocket(shost); //关闭套接字
wsacleanup(); //释放套接字资源
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯