diff --git a/main.go b/main.go index ba63991..6c9df02 100644 --- a/main.go +++ b/main.go @@ -6,10 +6,12 @@ import ( "log" "net" "sync" + + "smpptester/pdu" ) func init() { - log.SetFlags(log.Lmicroseconds) + log.SetFlags(log.Lmicroseconds | log.Lshortfile) } // Function to create a submit_sm PDU @@ -29,7 +31,7 @@ func createSubmitSMPDU() []byte { validityPeriod := "" registeredDelivery := byte(0x01) replaceIfPresentFlag := byte(0x00) - dataCoding := byte(0x00) + dataCoding := byte(0x01) smDefaultMsgID := byte(0x00) shortMessage := "Hello, SMPP!" @@ -37,7 +39,6 @@ func createSubmitSMPDU() []byte { headerLength := 16 bodyLength := 1 + len(serviceType) + 1 + 1 + len(sourceAddr) + 1 + 1 + len(destinationAddr) + 1 + 1 + len(scheduleDeliveryTime) + 1 + len(validityPeriod) + 1 + 1 + 1 + 1 + 1 + len(shortMessage) totalLength := headerLength + bodyLength - log.Printf("Total length: %d", totalLength) // Create a buffer to hold the PDU var buffer bytes.Buffer @@ -136,7 +137,55 @@ func main() { // go handleConnection(conn) // } // }() + submit := &pdu.SUBMIT_SM{ + Header: &pdu.PDU_HEADER{ + Command_length: 0, + Command_id: 4, + Command_status: 0, + Sequence_number: 1, + }, + Service_type: "hehe", + Source_addr_ton: 0x01, + Source_addr_npi: 0x01, + Source_addr: "12345", + Dest_addr_ton: 0x01, + Dest_addr_npi: 0x01, + Destination_addr: "67890", + Esm_class: 0x00, + Protocol_id: 0x00, + Priority_flag: 0x00, + Schedule_delivery_time: "", + Validity_period: "", + Registered_delivery: 0x01, + Replace_if_present: 0x00, + Data_coding: 0x01, + Sm_default_msg_id: 0x00, + Short_message: "Hello, SMPP!", + } + submit.UpdateSize() + buf := pdu.ByteBufferPool.Get(submit.Size()) + defer pdu.ByteBufferPool.Put(buf) + submit.Encode(buf) + log.Println(buf.Bytes()) log.Println(createSubmitSMPDU()) + // log.Println(pdu.Encode()) + // serviceType := "CMT" + // sourceAddrTON := byte(0x01) + // sourceAddrNPI := byte(0x01) + // sourceAddr := "12345" + // destAddrTON := byte(0x01) + // destAddrNPI := byte(0x01) + // destinationAddr := "67890" + // esmClass := byte(0x00) + // protocolID := byte(0x00) + // priorityFlag := byte(0x00) + // scheduleDeliveryTime := "" + // validityPeriod := "" + // registeredDelivery := byte(0x01) + // replaceIfPresentFlag := byte(0x00) + // dataCoding := byte(0x01) + // smDefaultMsgID := byte(0x00) + // shortMessage := "Hello, SMPP!" wg := &sync.WaitGroup{} wg.Add(1) @@ -150,7 +199,7 @@ func main() { defer conn.Close() go func() { - conn.Write(createSubmitSMPDU()) + conn.Write(buf.Bytes()) data, err := conn.Read(make([]byte, 1024)) if err != nil { log.Printf("Failed to read from connection: %+v", err)