/*untili.h*/
#ifndef _UTILI_H
#define _UTILI_H
#include<stdio.h>
#include<unistd.h>
#include<sys/socket.h>
#include<string.h>
#include<stdlib.h>
#include<netinet/in.h>
#define SERVER_PORT 8080
#define SERVER_IP "127.0.0.1"//沒有網卡此地址也可以用 本地環回地址
#define LIST_QUEUE_SIZE 5
#define BUFFER_SIZE 256
#endif
#include"utili.h"
int main()
{
int sockSer = socket(AF_INET,SOCK_STREAM,0); //服務器的套接字號
if(sockSer == -1)
{
perror("socket");
exit(1);
}
struct sockaddr_in addrSer,addrCli;
addrSer.sin_family = AF_INET;
addrSer.sin_port = htons(SERVER_PORT);//htons()函數 host主機到達網絡的字集序轉換,host to network short
addrSer.sin_addr.s_addr = inet_addr(SERVER_IP);//ip地址
socklen_t len = sizeof(struct sockaddr);
int ret = bind(sockSer,(struct sockaddr*)&addrSer,len);
if(ret == -1)
{
perror("bind");
exit(1);
}
/*監聽*/
ret = listen(sockSer , LIST_QUEUE_SIZE);
if(ret == -1)
{
perror("listen");
exit(1);
}
/*接受連接*/
int sockConn = accept(sockSer ,(struct sockaddr*)&addrCli , &len);
if(sockConn == -1)
{
perror("Server accept Client Connect fail.\n");
exit(1);
}
else
{
printf("Server accetp Client Connect Success.\n");
}
char sendbuf[BUFFER_SIZE];
char recvbuf[BUFFER_SIZE];
while(1)
{
printf("Ser:>");
scanf("%s",sendbuf);
send(sockConn , sendbuf , strlen(sendbuf)+1,0);
recv(sockConn,recvbuf,BUFFER_SIZE,0);
printf("Cli:>%s\n",recvbuf);
}
close(sockSer);
return 0;
}
#include"utili.h"
int main()
{
int sockCli = socket(AF_INET , SOCK_STREAM , 0);
if(sockCli == -1)
{
perror("socket");
exit(1);
}
struct sockaddr_in addrSer;
addrSer.sin_family = AF_INET;
addrSer.sin_port = htons(SERVER_PORT);
addrSer.sin_addr.s_addr = inet_addr(SERVER_IP);
socklen_t len = sizeof(struct sockaddr);
int ret = connect (sockCli,(struct sockaddr*)&addrSer,len);
if(ret == -1)
{
perror("connect");
exit(1);
}
else
{
printf("Client Connect Server Success.\n");
}
char sendbuf[BUFFER_SIZE];
char recvbuf[BUFFER_SIZE];
while(1)
{
recv(sockCli,recvbuf,BUFFER_SIZE,0);
printf("Ser:>%s\n",recvbuf);
printf("Cli:>");
scanf("%s" , sendbuf);
send(sockCli , sendbuf , strlen(sendbuf)+1,0);
}
close(sockCli);
return 0;
}