socket setsockopt - Linux

Mary avatar
By Mary
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時,就會停下來

--
Tags: Linux

All Comments

Regina avatar
By Regina
at 2015-09-24T12:58
setsockopt(...."wlan0",4) <== 明明 "wlan0" 有5個字元...
Anthony avatar
By Anthony
at 2015-09-25T00:51
XDDDD
Oliver avatar
By Oliver
at 2015-09-29T19:47
我改成 5 還是一樣
Blanche avatar
By Blanche
at 2015-10-02T05:57
用 root 身份跑這個程式的話情況如何?
Gary avatar
By Gary
at 2015-10-07T04:29
我記得指定介面的程式,需要有 root 身份權限才可以跑
一般程式用哪個介面就依據 routing table 來決定
Ivy avatar
By Ivy
at 2015-10-08T21:11
有用root耶
Yuri avatar
By Yuri
at 2015-10-11T09:17
所謂 "在connect時,就會停下來" 是說卡在 connect(),
Harry avatar
By Harry
at 2015-10-15T21:03
還是connect()傳回負值,顯示"Can Not Connect To"...後結束?
Franklin avatar
By Franklin
at 2015-10-19T03:23
卡在connect
Emily avatar
By Emily
at 2015-10-22T06:05
那再多等 3~10分鐘, 通常應該會得到 ETIMEDOUT 而結束 :P
Genevieve avatar
By Genevieve
at 2015-10-26T17:18
只是, 問題再於, 你 connect 到哪, 且期望得到什麼結果?
Agnes avatar
By Agnes
at 2015-10-30T13:40
設成non-block用select等timeout如何?
Joseph avatar
By Joseph
at 2015-10-31T15:05
connet到server ip address
Franklin avatar
By Franklin
at 2015-11-03T05:04
你接著要思考的是,wlan0是否有路由到server ip address,
以及server是否有路由可回到你的wlan0.
Hedda avatar
By Hedda
at 2015-11-03T11:46
呃,原PO之後的 #1M11fnL5 (Linux) 那一篇似乎是此問題的延續?
Cara avatar
By Cara
at 2015-11-06T10:37
好像是樓上說到的問題,

使用usb開機有問題

Ivy avatar
By Ivy
at 2015-09-23T14:43
http://i.imgur.com/vDqgnji.jpg 有去爬文 可是看不太懂 請各位大大幫忙 - ...

如何將 driver value傳到user space

Candice avatar
By Candice
at 2015-09-22T20:30
最近想把 802.11 driver 檢查CRC封包 error counter的結果 送到user space Linux/drivers/net/wireless/ath/ath9k/recv.c int wifi_frame_recv_counter = 0; int wifi_frame_err ...

OpenMediaVault 讀不到第二顆硬碟

James avatar
By James
at 2015-09-22T11:36
硬體: BananaPi + SATA Port Multiplier 系統: OpenMediaVault for Banana pi 不久前用了七年的電腦終於壽終正寢了,因此打算以後都用筆電處理生活上的 大小事務。 但又不忍心用P2P來操筆電這種嬌嫩的設備,於是做了一台專門用 來下載的NAS。 ht ...

FreeNAS安裝plugin問題

Jacob avatar
By Jacob
at 2015-09-22T00:13
各位先進你們好 不知道freenas的問題可不可以在這裡問 我用VM安裝FreeNAS 9.3 安裝完畢也可以透過電腦存取檔案 但是要增加plugin時就出現問題 會進入鬼打牆模式 請問有人可以指導我一下我少了哪些步驟嗎? 我想加裝HTPC、ownCloud、Transmission 萬分感謝 http:// ...

對付GFW用的openVPN有哪些設定?

Sarah avatar
By Sarah
at 2015-09-20T21:50
因為GFW技術一直更新,我看很多手法卻又有人說已經無效,想請問目前有效的設定 是甚麼? 我目前是打算台灣放一台CentOS 6.7,另外帶一台筆電也是裝CentOS 6.7, 直接VPN連回台灣跳。 我用的openVPN是很標準的那種共用CA然後各自的crt和key的那種,走443,很早就 被說用DPI掃特 ...