#include <iostream>
#include <netinet/in.h>
#include "string.h"
#include <cstdio>
#include <arpa/inet.h>
#include <cstdlib>
#include <unistd.h>
#define server_port 8083
using namespace std;
int main (){
int s;
int len;
char buffer [256];
struct sockaddr_in servAddr;
struct sockaddr_in clntaddr;
int clntAddrLen;
memset(&servAddr,0,sizeof(servAddr));
servAddr.sin_family=AF_INET;
servAddr.sin_port=htons(server_port);
servAddr.sin_addr.s_addr=inet_addr( "127.0.0.1");
//s=socket(PF_INET,SOCK_DGRAM,0);
//cout<<s<<'\n';
if((s=socket(PF_INET, SOCK_STREAM, 0)) ==-1 )
{
cout<<"case1"<<'\n';
perror("Error:socket failed!");
exit(1);
}
if(bind(s,(struct sockaddr*) &servAddr,sizeof(servAddr))<0)
{
cout<<"case2"<<'\n';
perror("Error:bind failed!");
exit(1);
}
int c=1;
while(true)
{
//cout<<"case3"<<'\n';
len=recvfrom (s,buffer,sizeof(buffer),0,(struct sockaddr*) &clntaddr,(socklen_t*) &clntAddrLen);
//cout<<"case4"<<'\n';
for(int i=0;i<=256;i++){
buffer[i]-=32;
}
sendto(s,buffer,len,0,(struct sockaddr*)&clntaddr,sizeof(clntaddr));
//sleep(3);
}
}
이게 서버고
#include <iostream>
#include <unistd.h>
#include <netinet/in.h>
#include "string.h"
#include <cstdio>
#include <cstdlib>
#include <arpa/inet.h>
using namespace std;
int main (int argc, char*argv[])
{
int s;
int len;
char* servName;
int servPort;
char* string;
char buffer [256+1];
struct sockaddr_in servAddr;
cout<< argc<<'\n';
if(argc!=4){
cout<<"error: 3 arg are needed\n";
exit(1);
}
servName=argv[1];
servPort=atoi(argv[2]);
string=argv[3];
memset(&servAddr,0,sizeof(servAddr));
servAddr.sin_family=AF_INET;
inet_pton(AF_INET,servName,&servAddr.sin_addr);
servAddr.sin_port=htons(servPort);
servAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
if(s=socket(PF_INET,SOCK_DGRAM,0)<0)
{
perror("error:socket failed");
exit(1);
}
len=sendto(s,string,strlen(string),0,(struct sockaddr*) &servAddr,sizeof(servAddr));
recvfrom(s,buffer,len,0,NULL,NULL);
buffer[len]='\0';
printf("echo string received:");
fputs(buffer,stdout);
cout<<'\n';
close(s);
exit(0);
}
이게 클라이언트인데
입력받은 문자열 대문자로 반환하는건데
서버도 아무것도 못받고
클라이언트도 아무것도 못받음
UDT 면서 SOCK_DGRAM 써야 하는거아닌감
아 그러네 미친시발
그거 고쳐도 안됨
클라는 sock 말고는 이상 없어보이는데
서버랑 클라 터미널 따로 열어서 데이터 보내봄?
당연
len = sendto , recvfrom 이부분
파라미터를 제대로 맞춰봐
len=sendto 인데 컴파일할때 오류 안남??
엥 파라메터가 왜요
안나던데
둘 다 함수로는 바이트 크기 반환하는거잖음