TCP客户端与服务端通信
程序员文章站
2022-06-05 20:58:39
...
#客户端代码:
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <errno.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>
#define MAXLINE 1024
int main(int argc,char **argv)
{
char *servInetAddr = "127.0.0.1";//设置服务端IP地址
int socketfd,n;
struct sockaddr_in sockaddr;
char recvline[MAXLINE], sendline[MAXLINE];
if(argc != 2)
{
printf("登录客户端IP地址 \n");
exit(0);
}
//创建socketfd
socketfd = socket(AF_INET,SOCK_STREAM,0);
//初始化
bzero(&sockaddr,sizeof(sockaddr));
sockaddr.sin_family = AF_INET;
sockaddr.sin_port = htons(8000);
inet_pton(AF_INET,servInetAddr,&sockaddr.sin_addr);
//请求连接connect
/*if((*/connect(socketfd,(struct sockaddr*)&sockaddr,sizeof(sockaddr));/*) < 0 )
{
printf("connect error %s errno: %d\n",strerror(errno),errno);
exit(0);
}*/
printf("向服务端发送信息:");
//键入字符串,保存至sendline
fgets(sendline,1024,stdin);
//发送数据
/*if((*/send(socketfd,sendline,strlen(sendline),0);/*) < 0)
{
printf("send mes error: %s errno : %d",strerror(errno),errno);
exit(0);
}*/
//接收数据
n = recv(socketfd,recvline,MAXLINE,0);
recvline[n] = '\0';
printf("收到加密信息:%s",recvline);
//关闭客户端
close(socketfd);
exit(0);
}
#服务端代码:
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <string.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <arpa/inet.h>
#include<ctype.h>
#define MAXLINE 1024
int main(int argc,char **argv)
{
int listenfd,connfd;
struct sockaddr_in sockaddr;
char buff[MAXLINE];
int n;
//初始化
bzero(&sockaddr,sizeof(sockaddr));
sockaddr.sin_family = AF_INET;
sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
sockaddr.sin_port = htons(8000);
//创建socket
listenfd = socket(AF_INET,SOCK_STREAM,0);
//绑定bind
bind(listenfd,(struct sockaddr *) &sockaddr,sizeof(sockaddr));
//监听listenfd
listen(listenfd,1024);
printf("等待客户端输入信息...\n");
while(1)
{//响应accpet
/*if((*/connfd = accept(listenfd,(struct sockaddr*)NULL,NULL);/*)==-1)
{
printf("accpet socket error: %s errno :%d\n",strerror(errno),errno);
continue;
}*/
//接收信息
n = recv(connfd,buff,MAXLINE,0);
buff[n] = '\0';
printf("收到客户端信息:%s",buff);
//转换大小写
for(int i=0;buff[i]!='\0';i++)
if(buff[i]>='a'&&buff[i]<='z')
buff[i]=toupper(buff[i]);
else
buff[i]=tolower(buff[i]);
printf("发送加密信息:%s",buff);
//发送信息
send(connfd,buff,strlen(buff),0);
close(connfd);
}
close(listenfd);
}