|
|
这段程序的问题是客户端能收到并输出服务端的的返回信息字符串。但是服务端能收到却不能显示客户端发来的字符串.
server端是过去装的debian stable
client端是新装的ebian testing
- #include <stdio.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <netdb.h>
- int port =8000;
- void main(){
- struct sockaddr_in sin;
- struct sockaddr_in pin;
- int sock_descriptor;
- int temp_sock_descriptor;
- int address_size;
- char buf[16384];
- int i,len;
- sock_descriptor = socket(AF_INET,SOCK_STREAM,0);
- if(sock_descriptor == -1){
- perror("call to socket");
- }
- bzero(&sin,sizeof(sin));
- sin.sin_family = AF_INET;
- sin.sin_addr.s_addr = INADDR_ANY;
- sin.sin_port = htons(port);
- if(bind(sock_descriptor,(struct sockaddr *)&sin,sizeof(sin)) == -1){
- perror("call to bind");
- exit(1);
- }
- if (listen(sock_descriptor,20) == -1){
- perror("call to listen");
- exit(1);
- }
- printf("Accepting connection ...\n");
- while(1){
- temp_sock_descriptor = accept(sock_descriptor, (struct sockaddr *)&pin,&address_size);
- if(temp_sock_descriptor == -1){
- perror("call to accept");
- exit(1);
- }
- if(recv(temp_sock_descriptor,buf,16384,0) == -1){
- perror("call to recv");
- exit(1);
- }
- printf("received from client:%s\n",buf);
- len = strlen("OK.OK.OK.OK!");
- if(send(temp_sock_descriptor,"OK,OK,OK,OK!",len,0) == -1){
- perror("call to send");
- exit(1);
- }
- close(temp_sock_descriptor);
- }
- }
复制代码
client:
- #include <stdio.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <netdb.h>
- char *host_name = "192.168.0.101";
- int port = 8000;
- void main(int argc,char *argv[]){
- char buf[8192];
- char message[256];
- int socket_descriptor;
- struct sockaddr_in pin;
- struct hostent *server_host_name;
- char *str = "A default test string";
- if(argc < 2){
- printf("Usage:'clinet "Any test string"\n");
- printf("We will send a default test string.\n");
- } else{
- str=argv[1];
- }
- if((server_host_name = gethostbyname(host_name)) ==0){
- perror("Error resolving local host\n");
- exit(1);
- }
- bzero(&pin,sizeof(pin));
- pin.sin_family = AF_INET;
- pin.sin_addr.s_addr = htonl(INADDR_ANY);
- pin.sin_addr.s_addr = ((struct in_addr *) (server_host_name->h_addr))->s_addr;
- pin.sin_port = htons(port);
- if((socket_descriptor = socket(AF_INET,SOCK_STREAM,0)) == -1){
- perror("Error opening socket\n");
- exit(1);
- }
- if(connect(socket_descriptor,(void *)&pin,sizeof(pin)) == -1){
- perror("Error connecting to socket\n");
- exit(1);
- }
- printf("Sending message %s to server...\n",str);
- if(send(socket_descriptor,buf,8192,0) == -1){
- perror("Error in send\n");
- exit(1);
- }
- printf("..sent message.. wait for response..\n");
- if(recv(socket_descriptor,buf,8192,0) == -1){
- perror("Error in receiving response from server\n");
- exit(1);
- }
- printf("\n Response from server:\n\n%s\n",buf);
- close(socket_descriptor);
- }
复制代码 |
|