当前位置:首页 > 操作系统 > Linux

linux系统UDP的socket通信编程3

我刚开始接触linux下的socket编程,边抄边理解udp socket编程,我的疑问是server不指定IP地址,client的目标IP地址是127.0.0.1,这样就可以通信吗?在同一主机下是不是不能测试?如果server默认绑定本机的IP 地址,那么开启server后,在浏览器中输入127.0.0.1:(相应端口) 也可以得到数据?我的程序如下,没有跑起来,其实我觉得我不会测试,不知道本质所以会有细节漏掉。(使用的系统是ubuntu 11.10 ,编译器GCC ,分别在同一主机下的两个终端中运行生成的.out文件。)提前感谢大家的回答,不管多少,您的回答让一个初学者非常暖心~~

服务器程序

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include<stdio.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
 
#define lport 4567
 
int main()
{
     int mysock,len;
     struct sockaddr_in addr;
     int i=0;
     char msg[256];
 
     int addr_len;
 
     if ((mysock=socket(AF_INET,SOCK_DGRAM,0))<0)
     {
         perror ( "error" );
         exit (1);
     }
     else
     {
         printf ( "socket created.n" );
         printf ( "socket ID: %dn" ,mysock);
     }
     addr_len= sizeof ( struct sockaddr_in);
     bzero(&addr, sizeof (addr));
     addr.sin_family=AF_INET;
     addr.sin_port=htons(lport);
     addr.sin_addr.s_addr=htonl(INADDR_ANY);
 
     if (bind(mysock,&addr, sizeof (addr))<0)
     {
         perror ( "connect" );
         exit (1);
     }
     else
     {
         printf ( "bind ok.n" );
         printf ( "local port: %dn" ,lport);
     }
     while (1)
     {
         bzero(msg, sizeof (msg));
         len=recvfrom (mysock,msg, sizeof (msg),0,&addr,&addr_len);
 
         printf ( "%d: " ,i);
         i++;
         printf ( "message form: %sn" ,inet_ntoa(addr.sin_addr));
         printf ( "message: %snn" ,msg);
         sendto(mysock,msg,len,0,&addr,addr_len);
     }
     return 0;
}

 

客户机程序:

 

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<stdio.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<sys/socket.h>
 
#define rport 4567
#define rip "127.0.0.1"
 
int main()
{
     int s,len;
     struct sockaddr_in addr;
     int addr_len;
     char msg[256];
     int i=0;
 
     if ((s=socket(AF_INET,SOCK_DGRAM,0))<0)
     {
         perror ( "error" );
         exit (1);
     }
     else
     {
         printf ( "socket created.n" );
         printf ( "socket id: %dn" ,s);
         printf ( "romote ip: %sn" ,rip);
         printf ( "remote port: %dn" ,rport);
     }
 
     len= sizeof ( struct sockaddr_in);
     bzero(&addr, sizeof (addr));
     addr.sin_family=AF_INET;
     addr.sin_port=htons(rport);
     addr.sin_addr.s_addr=inet_addr(rip);
 
     while (1)
     {
         bzero(msg, sizeof (msg));
         len=read(STDIN_FILENO,msg, sizeof (msg));
         sendto(s,msg,len,0,&addr,addr_len);
         printf ( "nInput message: %sn" ,msg);
         len=recvfrom(s,msg, sizeof (msg),0,&addr,&addr_len);
 
         printf ( "%d :" ,i);
         i++;
         printf ( "received message: %s n" ,msg);
     }
     return 0;
}

原文:http://www.cnblogs.com/dpf-learn/p/6175689.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐