#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define MAXLINE 80
#define SERV_PORT 8000
int main(void)
{
struct sockaddr_in servaddr,cliaddr;/*定义服务器套接字结构体和客户端结构体*/
socklen_t cliaddr_len;
int listenfd,connfd;
char buf[MAXLINE];
char str[INET_ADDRSTRLEN];
int i,n;
listenfd=socket(AF_INET,SOCK_STREAM,0);/*得到服务器套接字*/
bzero(&servaddr,sizeof(servaddr));/服务器套接字结构体初始化/
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);/*htonl字节顺序host to network long*/
servaddr.sin_port=htons(SERV_PORT);
bind(listenfd,(struct sockaddr *)&servaddr,/*bind函数将服务器套接字绑定到服务器端口下*/
sizeof(servaddr));
listen(listenfd,20);
printf("Accepting connections ...\n");
while(1){
cliaddr_len=sizeof(cliaddr);
connfd=accept(listenfd,(struct sockaddr *)&cliaddr,/*接受请求,第二参数是发起连接请求的端口号和ip地址*/
&cliaddr_len);
n=read(connfd,buf,MAXLINE);
printf("received from %s at PORT %d\n",
inet_ntop(AF_INET,&cliaddr.sin_addr,str,
sizeof(str)),
ntohs(cliaddr.sin_port));
for(i=0;i<n;i++)
buf[i]=toupper(buf[i]);
write(connfd,buf,n);
close(connfd);
}
return 0;
}
服务器端需要bind,accept接受客户请求与客户端端口号与IP
客户端中connect连接服务器与存储的服务器端口号与Ip地址