linux socket程式設計初步(2)
服務端程式碼:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/fcntl.h>
#include <strings.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#define SERVER_PORT 12000
#define BUF_SIZE 4096 /* block transfer size */
#define SIZE 10 /* how many client can connect at the same time */
void fatal(char *string)
{
printf("%s\n",string);
exit(1);
}
int main(/*int argc,char * argv[]*/)
{
printf("main begin!\n");
int s,b,l,fd,sa,bytes,on=1;
char buf[BUF_SIZE]; /*buf for outgoing files*/
struct sockaddr_in channel; /* hold IP address*/
/* Build address structure to bind to socket. */
bzero(&channel,sizeof(channel));
channel.sin_family=AF_INET;
channel.sin_addr.s_addr=htonl(INADDR_ANY);
channel.sin_port=htons(SERVER_PORT);
printf("main begin--2!\n");
/* Passive open.Wait for connection. */
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); /* Creat socket */
if(s<0)
fatal("socket failed");
else
printf("socket sucess!!\n");
setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&on,sizeof(on));
/* use the socket for many time (up word) */
b=bind(s,(struct sockaddr *)&channel,sizeof(channel));
if(b<0)
fatal("bind failed");
else
printf("bind sucess!!\n");
l=listen(s,SIZE);
if(l<0)
fatal("listen failed");
else
printf("listen sucess!!\n");
/* Socket is now set up and bound. Wait for connection and process it. */
while(1)
{
printf("in while!!\n");
sa=accept(s,0,0);
if(sa<0)
fatal("accept failed");
bytes=recv(sa,buf,BUF_SIZE,0);
buf[bytes]='\n';
write(1,buf,bytes+1);//'1' is the stdout.
close(fd);
close(sa);
}
return 0;
}
客戶端:
/*
*This page contains a client program that can send a message to the server program.
*/
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>//inet_aton
#include <netdb.h>
#include <strings.h>
#include <stdlib.h>
#include <unistd.h>
//#include <sys/fcntl.h>
#include <string.h>
#include <stdio.h>
#define SERVER_PORT 12000
#define BUF_SIZE 100
#define DEST_IP "127.0.0.1"//Changed by fupeng
void fatal(char *s)
{
printf("%s\n",s);
exit(1);
}
int main(/*int argc,char * *argv*/)
{
int c,s,bytes;
char buf[BUF_SIZE]; /*buf for incoming files*/
struct sockaddr_in channel; /* hold IP address*/
// if (argc!=2)
// {
// printf("Usage:%s IPaddress\n",argv[0]);
// exit(1);
// }
s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
if(s<0)
fatal("socket");
// else cout<<"socket success!"<<endl;
else printf("socket success!\n");
bzero(&channel,sizeof(channel));
channel.sin_family=AF_INET;
channel.sin_port=htons(SERVER_PORT);
if(inet_aton(DEST_IP,&channel.sin_addr)==0)
{
/* use the ASCII ip for the server's sin_addr. */
fprintf(stderr,"Inet_aton erro\n");
exit(1);
}
c=connect(s,(struct sockaddr *)&channel,sizeof(channel));
if(c<0)
fatal("connetct failed");
char sendline[BUF_SIZE];
int num;
printf("connected to server.\n");
printf("Input the message:");
if(fgets(sendline,BUF_SIZE,stdin)==NULL)
{
printf("\nExit.\n");
return 1;//changed by fupeng
}
num=strlen(sendline);
sendline[num-1]='\0';
send(s,sendline,strlen(sendline),0);
close(s);
return 0;
}
相關文章
- linux下TCP socket程式設計初步(1)LinuxTCP程式設計
- Linux socket程式設計學習初步(4)--伺服器端多程式Linux程式設計伺服器
- linux Socket 程式設計Linux程式設計
- Linux socket程式設計學習初步(5)--伺服器多執行緒Linux程式設計伺服器執行緒
- Linux Socket 程式設計簡介Linux程式設計
- Linux Socket C語言網路程式設計:TCP SocketLinuxC語言程式設計TCP
- Linux Socket C語言網路程式設計:UDP SocketLinuxC語言程式設計UDP
- SOCKET程式設計程式設計
- Linux socket程式設計學習初步(3)--客戶端向伺服器請求檔案Linux程式設計客戶端伺服器
- Linux Socket C語言網路程式設計:Select SocketLinuxC語言程式設計
- Linux環境下的Socket程式設計Linux程式設計
- Java遊戲程式設計初步Java遊戲程式設計
- Linux系統程式設計(37)—— socket程式設計之原始套接字Linux程式設計
- socket程式設計(1)程式設計
- Java Socket程式設計Java程式設計
- Java Socket程式設計Java程式設計
- WCF、Socket程式設計程式設計
- Socket程式設計(九)程式設計
- Socket程式設計模型程式設計模型
- linux下bluetooth程式設計(五)bluetooth與socketLinux程式設計
- 【Linux網路程式設計】Socket Api函式Linux程式設計API函式
- DirectX 7 程式設計初步 (轉)程式設計
- Python socket程式設計Python程式設計
- Socket程式設計基礎程式設計
- socket程式設計實戰程式設計
- Socket網路程式設計程式設計
- Socket 程式設計實戰程式設計
- IO和socket程式設計程式設計
- Java Socket 程式設計指南Java程式設計
- 網路程式設計-socket程式設計
- Winsock程式設計初步之<三> 源程式例項(2) (轉)程式設計
- Linux Socket C語言網路程式設計:Poll Socket [code from GitHub, for study]LinuxC語言程式設計Github
- Linux Socket C語言網路程式設計:Epoll Socket [code from GitHub, for study]LinuxC語言程式設計Github
- Linux系統程式設計(33)—— socket程式設計之TCP程式的錯誤處理Linux程式設計TCP
- Linux Shell程式設計(2)Linux程式設計
- Linux Socket C語言網路程式設計:Pthread Socket [code from GitHub, for study]LinuxC語言程式設計threadGithub
- linux非阻塞式socket程式設計之select()用法Linux程式設計
- Linux程式設計入門 - socket/inetd programming(轉)Linux程式設計