socket setsockopt - Linux

By Mary
at 2015-09-23T15:27
at 2015-09-23T15:27
Table of Contents
struct sockaddr_in client_addr;
bzero(&client_addr,sizeof(client_addr));
client_addr.sin_family = AF_INET;
client_addr.sin_addr.s_addr = htons(INADDR_ANY);
client_addr.sin_port = htons(0);
int client_socket = socket(AF_INET,SOCK_STREAM,0);
if(client_socket < 0)
{
printf("Create Socket Failed!\n");
exit(1);
}
struct ifreq interface;
//skfd = socket(AF_INET, SOCK_DGRAM, 0);
strncpy(interface.ifr_ifrn.ifrn_name, "eth0", IFNAMSIZ);
if (setsockopt(client_socket, SOL_SOCKET, SO_BINDTODEVICE,
(char *)&interface, sizeof(interface)+1) < 0) {
perror("sendpacket: setting SO_BINDTODEVICE");
exit(1);
}
/* if ( setsockopt(client_socket,SOL_SOCKET,SO_BINDTODEVICE,"wlan0",4) ==
-1 )
{
printf("Set Interface Card Failed!\n");
exit(1);
}*/
/* if(bind(client_socket,(struct
sockaddr*)&client_addr,sizeof(client_addr)))
{
printf("Client Bind Port Failed!\n");
exit(1);
}*/
struct sockaddr_in server_addr;
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
if(inet_aton(argv[1],&server_addr.sin_addr) == 0)
{
printf("Server IP Address Error!\n");
exit(1);
}
server_addr.sin_port = htons(REQUEST_SERVER_PORT);
socklen_t server_addr_length = sizeof(server_addr);
printf("Here...!\n");
if(connect(client_socket,(struct sockaddr*)&server_addr,
server_addr_length) < 0)
{
printf("Can Not Connect To %s!\n",argv[1]);
exit(1);
}
eth0 Link encap:Ethernet HWaddr 74:d0:2b:07:d1:e8
inet addr:140.117.89.78 Bcast:140.117.89.255 Mask:255.255.255.0
inet6 addr: fe80::76d0:2bff:fe07:d1e8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19560 errors:0 dropped:0 overruns:0 frame:0
TX packets:4755 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3398106 (3.3 MB) TX bytes:574250 (574.2 KB)
Interrupt:43 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:633 errors:0 dropped:0 overruns:0 frame:0
TX packets:633 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:83692 (83.6 KB) TX bytes:83692 (83.6 KB)
wlan0 Link encap:Ethernet HWaddr 6c:71:d9:5f:ea:5b
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::6e71:d9ff:fe5f:ea5b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2046 errors:0 dropped:0 overruns:0 frame:0
TX packets:304 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1276999 (1.2 MB) TX bytes:53934 (53.9 KB)
不知道為什麼我用setsockopt要指定wlan0的網卡傳送,
但是卻不行 在connect時,就會停下來
--
bzero(&client_addr,sizeof(client_addr));
client_addr.sin_family = AF_INET;
client_addr.sin_addr.s_addr = htons(INADDR_ANY);
client_addr.sin_port = htons(0);
int client_socket = socket(AF_INET,SOCK_STREAM,0);
if(client_socket < 0)
{
printf("Create Socket Failed!\n");
exit(1);
}
struct ifreq interface;
//skfd = socket(AF_INET, SOCK_DGRAM, 0);
strncpy(interface.ifr_ifrn.ifrn_name, "eth0", IFNAMSIZ);
if (setsockopt(client_socket, SOL_SOCKET, SO_BINDTODEVICE,
(char *)&interface, sizeof(interface)+1) < 0) {
perror("sendpacket: setting SO_BINDTODEVICE");
exit(1);
}
/* if ( setsockopt(client_socket,SOL_SOCKET,SO_BINDTODEVICE,"wlan0",4) ==
-1 )
{
printf("Set Interface Card Failed!\n");
exit(1);
}*/
/* if(bind(client_socket,(struct
sockaddr*)&client_addr,sizeof(client_addr)))
{
printf("Client Bind Port Failed!\n");
exit(1);
}*/
struct sockaddr_in server_addr;
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family = AF_INET;
if(inet_aton(argv[1],&server_addr.sin_addr) == 0)
{
printf("Server IP Address Error!\n");
exit(1);
}
server_addr.sin_port = htons(REQUEST_SERVER_PORT);
socklen_t server_addr_length = sizeof(server_addr);
printf("Here...!\n");
if(connect(client_socket,(struct sockaddr*)&server_addr,
server_addr_length) < 0)
{
printf("Can Not Connect To %s!\n",argv[1]);
exit(1);
}
eth0 Link encap:Ethernet HWaddr 74:d0:2b:07:d1:e8
inet addr:140.117.89.78 Bcast:140.117.89.255 Mask:255.255.255.0
inet6 addr: fe80::76d0:2bff:fe07:d1e8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:19560 errors:0 dropped:0 overruns:0 frame:0
TX packets:4755 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3398106 (3.3 MB) TX bytes:574250 (574.2 KB)
Interrupt:43 Base address:0x2000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:633 errors:0 dropped:0 overruns:0 frame:0
TX packets:633 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:83692 (83.6 KB) TX bytes:83692 (83.6 KB)
wlan0 Link encap:Ethernet HWaddr 6c:71:d9:5f:ea:5b
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::6e71:d9ff:fe5f:ea5b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2046 errors:0 dropped:0 overruns:0 frame:0
TX packets:304 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1276999 (1.2 MB) TX bytes:53934 (53.9 KB)
不知道為什麼我用setsockopt要指定wlan0的網卡傳送,
但是卻不行 在connect時,就會停下來
--
Tags:
Linux
All Comments

By Regina
at 2015-09-24T12:58
at 2015-09-24T12:58

By Anthony
at 2015-09-25T00:51
at 2015-09-25T00:51

By Oliver
at 2015-09-29T19:47
at 2015-09-29T19:47

By Blanche
at 2015-10-02T05:57
at 2015-10-02T05:57

By Gary
at 2015-10-07T04:29
at 2015-10-07T04:29

By Ivy
at 2015-10-08T21:11
at 2015-10-08T21:11

By Yuri
at 2015-10-11T09:17
at 2015-10-11T09:17

By Harry
at 2015-10-15T21:03
at 2015-10-15T21:03

By Franklin
at 2015-10-19T03:23
at 2015-10-19T03:23

By Emily
at 2015-10-22T06:05
at 2015-10-22T06:05

By Genevieve
at 2015-10-26T17:18
at 2015-10-26T17:18

By Agnes
at 2015-10-30T13:40
at 2015-10-30T13:40

By Joseph
at 2015-10-31T15:05
at 2015-10-31T15:05

By Franklin
at 2015-11-03T05:04
at 2015-11-03T05:04

By Hedda
at 2015-11-03T11:46
at 2015-11-03T11:46

By Cara
at 2015-11-06T10:37
at 2015-11-06T10:37
Related Posts
使用usb開機有問題

By Ivy
at 2015-09-23T14:43
at 2015-09-23T14:43
如何將 driver value傳到user space

By Candice
at 2015-09-22T20:30
at 2015-09-22T20:30
OpenMediaVault 讀不到第二顆硬碟

By James
at 2015-09-22T11:36
at 2015-09-22T11:36
FreeNAS安裝plugin問題

By Jacob
at 2015-09-22T00:13
at 2015-09-22T00:13
對付GFW用的openVPN有哪些設定?

By Sarah
at 2015-09-20T21:50
at 2015-09-20T21:50