功能: 客戶端輸入小寫字母,服務器顯示相應的大寫字母
./ser
./cli 127.0.0.1
#include <stdio.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <string.h>
#include <strings.h>
int main(int argc,char *argv[]){
struct sockaddr_in server;
//創建socket
int s_fd=socket(AF_INET,SOCK_STREAM,0);
if(s_fd==-1){
perror("socket");
return 1;
}
//初始化server的address
server.sin_family=AF_INET;
server.sin_port=htons(7777);
//127.0.0.1
inet_pton(AF_INET,argv[1],\
&server.sin_addr);
//發起和服務器的連接
int c=connect(s_fd,\
(struct sockaddr *)&server,\
sizeof(server));
if(c==-1){
perror("connect");
return 2;
}
char buf[1024];
//數據處理
while(gets(buf)!=NULL){
int r_len=strlen(buf)+1;
write(s_fd,buf,r_len);
if(strcmp(buf,"quit")==0) break;
int r=read(s_fd,buf,r_len);
//向顯示器輸出從服務器端獲取的信息
write(1,buf,r);
printf("\n");
bzero(buf,1024);
}
//關閉和服務器的連接
close(s_fd);
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <ctype.h>
/*internet address family*/
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
int main(void){
int s_fd;
char buf[1024];
//struct sockaddr server;/*通用地址*/
struct sockaddr_in server;/*ipv4協議族*/
struct sockaddr_in client;
//創建socket
s_fd=socket(AF_INET,SOCK_STREAM,0);
if(s_fd==-1){
perror("socket");
return 1;
}
//初始化server的信息
server.sin_family=AF_INET;
server.sin_port=htons(7777);
server.sin_addr.s_addr=htonl(INADDR_ANY);
//綁定socket到指定的地址空間
int b=bind(s_fd,\
(struct sockaddr *)&server,\
sizeof(server));
if(b==-1){
perror("bind");
return 2;
}
//監聽sockfd
int l=listen(s_fd,5);
if(l==-1){
perror("listen");
return 3;
}
printf("wait for client request..\n");
while(1){
int cli_len=sizeof(client);
//阻塞等待客戶端連接的到來
int connfd=accept(s_fd,\
(struct sockaddr *)&client,\
&cli_len);
if(connfd==-1){
perror("accept");
return 4;
}
//將客戶端的ip地址的二進制轉化爲字符串格式
char ip[128];
printf("ip:%s\n",\
inet_ntop(AF_INET,&client.sin_addr,ip,128));
//數據處理
while(1){
int r=read(connfd,buf,1024);
if(strcmp(buf,"quit")==0)break;
//將buf中的所有字符轉換爲大寫字符
for(int j=0;j<r;j++)
buf[j]=toupper(buf[j]);
//迴應給客戶端
write(connfd,buf,r);
//關閉和客戶端的連接
}
close(connfd);
}
close(s_fd);
return 0;
}