社区
网络编程
帖子详情
求助 一个关于socket的问题?
ahui535320611
2012-09-11 05:57:17
在同一个类的一个函数中初始化创建了一个socket(客户端) 并且CONNECT()连接了服务器端 这个函数成功了 然后我在另一个函数(统一各类)中使用同一个socket时 这次却调用不成功 上次创建好的socket 值就成乱码了?
...全文
156
11
打赏
收藏
求助 一个关于socket的问题?
在同一个类的一个函数中初始化创建了一个socket(客户端) 并且CONNECT()连接了服务器端 这个函数成功了 然后我在另一个函数(统一各类)中使用同一个socket时 这次却调用不成功 上次创建好的socket 值就成乱码了?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ahui535320611
2012-09-12
打赏
举报
回复
http://topic.csdn.net/u/20120912/09/3eff386d-0c4d-489d-9c07-9898798c9d74.html?49761
ahui535320611
2012-09-12
打赏
举报
回复
结贴了 这个帖子不知道出什么问题了 大家的回复都不显示 而且还同时出现了两个相同的帖子 我重新发帖 大家还过来棒棒忙 分照给
youngwolf
2012-09-12
打赏
举报
回复
如果m_socketRealConversationForCommon是成员变量,只有两个原因:
一,在ConnectServer()之后,SendMsg()之前,它被关闭了。
二,SendMsg()在ConnectServer()之前调用了。
socket是一个句柄,你怎么看出它是乱码来的?
gameslq
2012-09-12
打赏
举报
回复
应该没问题,贴一些对类CClientKZDDlg 变量的使用代码
ahui535320611
2012-09-12
打赏
举报
回复
不应该超出了吧 都是在一个类里边的 套接字一旦建立成功 并且客户端与服务器连接成功后 这个套接字是不是一直存在 并且值是不变的[Quote=引用 3 楼 的回复:]
在函数中创建的?超过作用域了吧...
[/Quote]
ahui535320611
2012-09-12
打赏
举报
回复
bool CClientKZDDlg::ConnectServer(CString strIP)
{
WORD wVersionRequested = MAKEWORD(2,0);
WSADATA wsaData;
int nErr;
//调用WSAStartup()
nErr = WSAStartup(wVersionRequested, &wsaData);
if(nErr != 0)
{
MessageBox("调用WSAStarup()出错");
return false;
}
//调用socket()
m_socketRealConversationForCommon = socket(AF_INET, SOCK_STREAM, 0);
if(m_socketRealConversationForCommon == INVALID_SOCKET)
{
MessageBox("调用socket()出错");
return false;
}
//调用connect()
//初始化服务器地址
m_strServerIP = strIP;
m_sockaddrServer.sin_family = AF_INET;
m_sockaddrServer.sin_addr.s_addr = inet_addr(m_strServerIP);
m_sockaddrServer.sin_port = htons(6578);
//连接服务器
nErr = connect(m_socketRealConversationForCommon, (sockaddr *)&m_sockaddrServer, sizeof(m_sockaddrServer));
if(nErr != 0)
{
MessageBox("调用connect()出错");
return false;
}
RecvMsg();
return true;
}
m_socketRealConversationForCommon在这个函数中初始化创建的 然后此函数结束后我在下边的函数使用这个socket时 值就变了 怎么能让在调用下边的函数时 也是刚创建的值 我看别人的程序就可以实现 自己却做不来 谢谢
void CClientKZDDlg::SendMsg()
{
send(m_socketRealConversationForCommon, m_strMsg, m_strMsg.GetLength(), 0);
}[Quote=引用 2 楼 的回复:]
connect()失败,请WSAGetLastError()检查失败的原因。
另外上面说的上次创建好的socket 值就成乱码了?什么意思?指的是recv接收的数据是乱码?你怎么recv接受的?发送到发送的没有问题?
[/Quote]
ahui535320611
2012-09-12
打赏
举报
回复
bool CClientKZDDlg::ConnectServer(CString strIP)
{
WORD wVersionRequested = MAKEWORD(2,0);
WSADATA wsaData;
int nErr;
//调用WSAStartup()
nErr = WSAStartup(wVersionRequested, &wsaData);
if(nErr != 0)
{
MessageBox("调用WSAStarup()出错");
return false;
}
//调用socket()
m_socketRealConversationForCommon = socket(AF_INET, SOCK_STREAM, 0);
if(m_socketRealConversationForCommon == INVALID_SOCKET)
{
MessageBox("调用socket()出错");
return false;
}
//调用connect()
//初始化服务器地址
m_strServerIP = strIP;
m_sockaddrServer.sin_family = AF_INET;
m_sockaddrServer.sin_addr.s_addr = inet_addr(m_strServerIP);
m_sockaddrServer.sin_port = htons(6578);
//连接服务器
nErr = connect(m_socketRealConversationForCommon, (sockaddr *)&m_sockaddrServer, sizeof(m_sockaddrServer));
if(nErr != 0)
{
MessageBox("调用connect()出错");
return false;
}
RecvMsg();
return true;
}
m_socketRealConversationForCommon在这个函数中初始化创建的 然后此函数结束后我在下边的函数使用这个socket时 值就变了 怎么能让在调用下边的函数时 也是刚创建的值 我看别人的程序就可以实现 自己却做不来 谢谢
void CClientKZDDlg::SendMsg()
{
send(m_socketRealConversationForCommon, m_strMsg, m_strMsg.GetLength(), 0);
}[Quote=引用 2 楼 的回复:]
connect()失败,请WSAGetLastError()检查失败的原因。
另外上面说的上次创建好的socket 值就成乱码了?什么意思?指的是recv接收的数据是乱码?你怎么recv接受的?发送到发送的没有问题?
[/Quote]
ahui535320611
2012-09-12
打赏
举报
回复
bool CClientKZDDlg::ConnectServer(CString strIP)
{
WORD wVersionRequested = MAKEWORD(2,0);
WSADATA wsaData;
int nErr;
//调用WSAStartup()
nErr = WSAStartup(wVersionRequested, &wsaData);
if(nErr != 0)
{
MessageBox("调用WSAStarup()出错");
return false;
}
//调用socket()
m_socketRealConversationForCommon = socket(AF_INET, SOCK_STREAM, 0);
if(m_socketRealConversationForCommon == INVALID_SOCKET)
{
MessageBox("调用socket()出错");
return false;
}
//调用connect()
//初始化服务器地址
m_strServerIP = strIP;
m_sockaddrServer.sin_family = AF_INET;
m_sockaddrServer.sin_addr.s_addr = inet_addr(m_strServerIP);
m_sockaddrServer.sin_port = htons(6578);
//连接服务器
nErr = connect(m_socketRealConversationForCommon, (sockaddr *)&m_sockaddrServer, sizeof(m_sockaddrServer));
if(nErr != 0)
{
MessageBox("调用connect()出错");
return false;
}
RecvMsg();
return true;
}
m_socketRealConversationForCommon在这个函数中初始化创建的 然后此函数结束后我在下边的函数使用这个socket时 值就变了 怎么能让在调用下边的函数时 也是刚创建的值 我看别人的程序就可以实现(他是封装了一个类里边 我不想另外加一个类) 自己却做不来 谢谢
void CClientKZDDlg::SendMsg()
{
send(m_socketRealConversationForCommon, m_strMsg, m_strMsg.GetLength(), 0);
}[Quote=引用 2 楼 的回复:]
connect()失败,请WSAGetLastError()检查失败的原因。
另外上面说的上次创建好的socket 值就成乱码了?什么意思?指的是recv接收的数据是乱码?你怎么recv接受的?发送到发送的没有问题?
[/Quote]
linlingyu
2012-09-11
打赏
举报
回复
在函数中创建的?超过作用域了吧...
Eleven
2012-09-11
打赏
举报
回复
connect()失败,请WSAGetLastError()检查失败的原因。
另外上面说的上次创建好的socket 值就成乱码了?什么意思?指的是recv接收的数据是乱码?你怎么recv接受的?发送到发送的没有问题?
miniget001dotcom
2012-09-11
打赏
举报
回复
什么成了乱码?如果在socket上操作失败,调用WSAGetLastError获取错误码看看什么原因
TCP服务器(
socket
)
服务器以及客户端程序,不知道为什么连接不上~
求助
~请大家帮忙看一下
问题
出在了哪里,谢谢~
手机Email 可发附件 带联系人列表
发上来是来
求助
的:在sun和nokia的模拟器上能正常发邮件,但是到了手机上就显示不能解析主机名(could not resolve hostname),查了下应该是执行SMTPClient里open()函数的时候抛出的异常,应该是
socket
连smtp服务器...
Socket
编程快速入门
本课程将理本课程将理啊 论结合实践,带你从零开始,系统学习
Socket
编程技术,让
Socket
的学习不再那么零散与难以掌握,同时会提炼出
Socket
网络传输的核心思想与构架,并带你踩坑出坑,增加你的分析与处理
问题
的啊aas...
DNS实验报告.pdf
需要考虑的
问题
: (1)多客户端并发 允许多个客户端(可能会位于不同的多个计算机)的并发查询,即:允许第
一个
查询尚未得到答案前就启动处理另外
一个
客户端查询请求(DNS 协议头中 ID 字 段的作用) 超时处理 ...
安卓实验报告(聊天室应用)
可考虑增加创新内容如发布文章、短视频、
求助
、直播等。 3. 教学方法 实验上机。 4. 本章重点 安卓应用市场发布流程;Android网络编程。 5. 本章难点 安卓应用市场发布流程;Android网络编程。 二、实验目的 1、了解...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章