문자열 버퍼의 charachters를 보내고받는 프로그램을 작성하고 있습니다. 다음 코드는 포인터를 사용하여 버퍼를 인쇄합니다. 나는소켓 프로그래밍을 사용하여 String 버퍼의 세 요소를 보내고 받으십시오.
//Write a simple echo server
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <arpa/telnet.h>
#include <unistd.h>
using namespace std;
string buff1[]= {"0xff , 0xfd, 0x18,0xff,0xfd,0x23","0xff , 0xfd, 0x1e","0xff , 0xfd, 0x1d","0xff ,0xfd,0x17"};
int main()
{
int sockfd , newsockfd , portno;
socklen_t clilen;
char buffer[256];
struct sockaddr_in serv_addr, cli_addr;
int n;
printf("\n=====================================================\nServer Side\n=====================================================\n");
while(buff1[count].length()>0)
{
const unsigned char *ptr = (const unsigned char*)buff1[count].c_str();
printf("Server Sending message %d of size:%d",count,buff1[count].length());
for(int i = 0 ; i < buff1[count].length(); i++)
{
printf("%c",*ptr);
ptr++;
}
printf("\n");
count++;
}
return(0);
}
OUTPUT을 (따라서 보내 사용, 이것은 TCP 연결입니다) 소켓 프로그래밍 기능 전송을 사용하여 3 지시가 FF로 시작 때마다 즉, 한 번에 이러한 요소 (3)를 보내는 기능을 추가 할 :
debian:~/sam$ ./single_sample
=====================================================
Server Side
=====================================================
Server Sending message 0 size32 :0xff , 0xfd, 0x18,0xff,0xfd,0x23
Server Sending message 1 size17 :0xff , 0xfd, 0x1e
Server Sending message 2 size17 :0xff , 0xfd, 0x1d
Server Sending message 3 size18 :0xff , 0xfd , 0x17
Segmentation fault
나는 다음과 같은 의심했다 : ㄱ) 출력은 세그먼트 오류를 보여주고있다? b) 각 메시지 즉 3 개 요소를 전송하기위한 전송() 메소드를 삽입 여기서 미리
Send 1 : 0xff,0xfd,0x18
Send 2 : 0xff,0xfd,0x23
감사
버퍼 길이를 하드 코딩하지 않으려면 어떻게해야합니까? – Jonsnow29
그러면 수동으로 문자열 벡터를 채워야합니다. 하나의 방법은 buff1에 문자열의 벡터를'std :: vector buff1'으로 사용하는 것입니다. 그리고 루프의 최상위 값을 for (count = 0; count
MasterHD