socket客户端里connect内存冲突,该如何解决
socket客户端里connect内存冲突
//****************************客户端***********************************
#pragma warning(disable: 4996)
#include<stdio.h>
#include<stdlib.h>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
void main()
{
WSADATA wsadata;
int iResult = WSAStartup(MAKEWORD(2, 2), &wsadata);
if (iResult != NO_ERROR)
printf("Error at WSAStartup()\n");
SOCKET server;
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (server == INVALID_SOCKET){
printf("Error at socket():%1d");
WSACleanup();
return;
}
SOCKADDR_IN clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr("192.168.1.1");
clientService.sin_port = htons(8080);
if (connect(server, (SOCKADDR*)&clientService, sizeof(SOCKADDR)) ==SOCKET_ERROR){
printf("Failed to connect: %s\n",GetLastError());
WSACleanup();
closesocket(server);
return;
}
/* 不知道是什么原因 */
------解决思路----------------------
客户端与服务端要对照着看一下。
检查端口打开没有。
------解决思路----------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。
------解决思路----------------------
那你先试下在命令行中
telnet 服务器IP 服务器端口
看是否能连接上,如果不能就是服务器的问题,可以才是客户端的问题。
(如果提示找不到 telnet 命令,在控制面板,添加删除程序,系统组件 里面把 telnet 客户端 选上)
另外,如果你要连本机的话,直接用 127.0.0.1 的 IP 就行了。
如果你是要连 iiiiii.imwork.net 这个域名,你的代码是错的,gethostname 会把名字填成本机的。
//****************************客户端***********************************
#pragma warning(disable: 4996)
#include<stdio.h>
#include<stdlib.h>
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
void main()
{
WSADATA wsadata;
int iResult = WSAStartup(MAKEWORD(2, 2), &wsadata);
if (iResult != NO_ERROR)
printf("Error at WSAStartup()\n");
SOCKET server;
server = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (server == INVALID_SOCKET){
printf("Error at socket():%1d");
WSACleanup();
return;
}
SOCKADDR_IN clientService;
clientService.sin_family = AF_INET;
clientService.sin_addr.s_addr = inet_addr("192.168.1.1");
clientService.sin_port = htons(8080);
if (connect(server, (SOCKADDR*)&clientService, sizeof(SOCKADDR)) ==SOCKET_ERROR){
printf("Failed to connect: %s\n",GetLastError());
WSACleanup();
closesocket(server);
return;
}
/* 不知道是什么原因 */
------解决思路----------------------
客户端与服务端要对照着看一下。
检查端口打开没有。
------解决思路----------------------
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。
------解决思路----------------------
那你先试下在命令行中
telnet 服务器IP 服务器端口
看是否能连接上,如果不能就是服务器的问题,可以才是客户端的问题。
(如果提示找不到 telnet 命令,在控制面板,添加删除程序,系统组件 里面把 telnet 客户端 选上)
另外,如果你要连本机的话,直接用 127.0.0.1 的 IP 就行了。
如果你是要连 iiiiii.imwork.net 这个域名,你的代码是错的,gethostname 会把名字填成本机的。