c# - Sending SMS for a bulk of users -


i want send sms bulk of users(4000 user) put following method on loop :

protected int sendsms(string url)         {             // send data.              streamwriter writer = null;             stringbuilder postdata = new stringbuilder();             uri myuri = new uri(url);             postdata.append(httputility.parsequerystring(myuri.query).get("username"));             postdata.append(httputility.parsequerystring(myuri.query).get("password"));             postdata.append(httputility.parsequerystring(myuri.query).get("sender"));             postdata.append(httputility.parsequerystring(myuri.query).get("recipients"));             postdata.append(httputility.parsequerystring(myuri.query).get("messagedata"));                string webpagecontent = string.empty;             byte[] bytearray = encoding.utf8.getbytes(postdata.tostring());             httpwebrequest webrequest = (httpwebrequest)webrequest.create(url);             webrequest.method = "post";             webrequest.contenttype = "application/x-www-form-urlencoded";             webrequest.contentlength = webrequest.contentlength = bytearray.length;              writer = new streamwriter(webrequest.getrequeststream());               try             {                 using (stream webpagestream = webrequest.getrequeststream())                 {                     webpagestream.write(bytearray, 0, bytearray.length);                 }                  using (httpwebresponse webresponse = (httpwebresponse)webrequest.getresponse())                 {                     using (streamreader reader = new streamreader(webresponse.getresponsestream()))                     {                         webpagecontent = reader.readtoend();                         //todo:parse webpagecontent: if response contains "ok"                         if (webpagecontent.contains("ok")) return 1;                         else return 0;                     }                 }                 //return 1;              }             catch (exception ee)             {                 errmapping.writelog(url);                 string error = ee.message + "<br><br>stack trace : " + ee.stacktrace;                 errmapping.writelog(error);                 return -1;             }          } 

after specific number of users 65 user, no sms had been sent rest of users and

i following exception :

error message:thread being aborted.<br><br>stack trace :    @ system.net.unsafenclnativemethods.ossock.recv(intptr sockethandle, byte* pinnedbuffer, int32 len, socketflags socketflags)    @ system.net.sockets.socket.receive(byte[] buffer, int32 offset, int32 size, socketflags socketflags, socketerror& errorcode)    @ system.net.sockets.socket.receive(byte[] buffer, int32 offset, int32 size, socketflags socketflags)    @ system.net.sockets.networkstream.read(byte[] buffer, int32 offset, int32 size)    @ system.net.pooledstream.read(byte[] buffer, int32 offset, int32 size)    @ system.net.connection.syncread(httpwebrequest request, boolean userretrievedstream, boolean proberead)    @ system.net.connectstream.processwritecalldone(connectionreturnresult returnresult)    @ system.net.httpwebrequest.checkdeferredcalldone(connectstream stream)    @ system.net.httpwebrequest.getresponse()    @ sendsms_emailui.frm_sms_send.sendsms(string url)  

i have built sms portal. describe experienced in v1.0 of application. solution have sms gateway provide me bulk sms access via http. put 1000 destinations xml (or comma delimited) package , send bulk sms gateway. because run on shared host, limited 500 destinations.

i have cache/temporary storage/table batch large destination (up 1,000,000) in cases , scheduler (timer based) sends each batch of 500 every few seconds (by calling script repeatedly) until messages sent. works charm!

for personalized messages, encourage client use desktop application personalization before forwarding sms portal. luck

process:

you'll need 3 items

  1. the script receives sendsms request
  2. the script sends sms
  3. the scheduler/timer (script/host service)

a. send sms request arrives with

a. message , sender id/ sender gsm number.  b. destinations (as comma delimited list). we'll assume 10,000 destinations 

b. split destinations 500 (any size wish) , log 500 destinations along message , senderid in each inbox row/record. note: if count 500 out looping (10,000 loops), script time out. gsm numbers in country 13 digits. loop sub string of length 500(13+1) 500 destinations per batch (20 loops).*

c. call script sends sms. sends first 500 , tag message sent. can add time sent. start scheduler

d. scheduler checks every 1.5 minutes if unsent messages exist in inbox , sends it. if nothing, scheduler stops. so, 10,000 messages sent within 30 mintues


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -