char** message = NULL;
messageLen = recv(clientsock, **message, 2, 0);
我的计划char * message =“hel”中的SERVER.c源在char **消息中发送给CLIENT.c源。但它不起作用,我对我的计划做了什么?
Server.c完整的源
#pragma comment(lib, "ws2_32.lib")
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <WinSock2.h>
#include <stdlib.h>
#define PORT 1234
#define BACKLOG 10
int main(int argc, char * argv[]) {
SOCKET sock, clientsock;
WSADATA wasData;
struct sockaddr_in sockinfo, clientinfo;
int clientsockSize;
char* message = "hel";
if (WSAStartup(MAKEWORD(2, 2), &wasData) != 0) { //int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
return 0;
}
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // socket(AF_INET , type , protocol)
if (sock == INVALID_SOCKET) {
return 1;
}
sockinfo.sin_family = AF_INET;
sockinfo.sin_port = htons(PORT); //
sockinfo.sin_addr.s_addr = htonl(INADDR_ANY);
if (bind(sock, (SOCKADDR*)&sockinfo, sizeof(sockinfo)) == SOCKET_ERROR) { // int bind (sock , (SOCKADDR*)&sockinfo , sizeof(sockinfo)) if true : return 0, else -1
return 2;
}
if (listen(sock, BACKLOG) == SOCKET_ERROR) { // Int listen (SOCKET , backlog)
return 3;
}
clientsockSize = sizeof(clientinfo);
printf("접속 대기중...\n");
clientsock = accept(sock, (SOCKADDR*)&clientinfo, &clientsockSize);
if (clientsock == INVALID_SOCKET) {
return 4;
}
printf("Send your message >> ");
send(clientsock, &message, sizeof(message), 0);
closesocket(sock);
closesocket(clientsock);
WSACleanup();
return -1;
}
CLIENT.c完整的源
#define _CRT_SECURE_NO_WARNINGS
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>
#include <WinSock2.h>
int main(int argc, char* argv[]) {
SOCKET clientsock;
WSADATA wasData;
struct sockaddr_in sockinfo;
char** message = NULL;
int messageLen;
if (argc != 3) {
printf("Argument is not sufficient!\nInputed Argument >> %d", argc);
exit(1);
}
if (WSAStartup(MAKEWORD(2, 2), &wasData) != 0) {
printf("Error >> Init WSAStartup(..)\n");
}
clientsock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (clientsock == INVALID_SOCKET)
printf("Error >> socket(..)\n");
memset(&sockinfo, 0, sizeof(sockinfo)); // 구조체 초기화
sockinfo.sin_family = AF_INET;
sockinfo.sin_port = htons(atoi(argv[2]));
sockinfo.sin_addr.s_addr = inet_addr(argv[1]);
if (connect(clientsock, (SOCKADDR*)&sockinfo, sizeof(sockinfo)) == SOCKET_ERROR)
printf("Error >> connect(..)\n");
messageLen = recv(clientsock, **message, sizeof(message) - 1, 0);
if (messageLen == -1)
printf("Error >> recv(..)\n");
printf("Server say >> %s", message);
closesocket(clientsock);
WSACleanup();
}
请参阅其他与套接字程序相关的问题。在其他问题中已经涉及指针的基本错误。 – Rohan